RegOpenKeyEx перестал работать на HKEY_LOCAL_MACHINE

Вы можете сделать все это с requests. Возьмите выпадающий список из опций, перечисленных в выпадающем меню, затем объедините атрибуты value в URL-адрес запроса, который извлекает json, содержащий всю информацию на странице. Тот же принцип применяется для добавления в другие выпадающие значения. Идентификаторы для каждого раскрывающегося списка - это атрибуты value опций в раскрывающемся списке, которые отображаются в отображаемом URL-адресе, разделенном // для каждого раскрывающегося списка.

import requests
from bs4 import BeautifulSoup as bs

url = 'https://www.accuform.com/product/getSku/danger-danger-authorized-personnel-only-MADM006/1/false/null//{}//WHFIw3xXmQx8zlz//6wr93DdrFo5JV//WdnO0RpwKpc4fGF'
startURL = 'https://www.accuform.com/safety-sign/danger-danger-authorized-personnel-only-MADM006'

res = requests.get(startURL)
soup = bs(res.content, 'lxml')
materials = [item['value'] for item in soup.select('#Wiqj7mb4rsAq9LB option')]
sizes = [item['value'] for item in soup.select('#WvXESrTyQjM3Ciw option')]
languages = [item['value'] for item in soup.select('#WUYWGMePtpmpmhy option')]
units = [item['value'] for item in soup.select('#W91eqaJ0WPXwe9b option')]

for material in materials:
    data = requests.get(url.format(material)).json()
    soup = bs(data['dataMaterialBullets'], 'lxml')
    lines = [item.text for item in soup.select('li')]
    print(lines)
    print(data['dataPriceDisplay'])     
    # etc......

Образец JSON:

6
задан Emile Vrijdags 25 May 2009 в 04:52
поделиться

1 ответ

На моей машине произошел сбой следующего кода с кодом ошибки 161, что означает «неверный путь» (найдите его в winerror.h):

long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );

Затем я изменил вызов RegOpenKeyEx на Использовать «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ» (обратите внимание, что нет начальных слешей), и это сработало:

#include <windows.h>
#include <iostream>
using namespace std; 

int main() {
    HKEY hk;

    // Notice that it's SOFTWARE instead of \\SOFTWARE:
    long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );
    if ( n == ERROR_SUCCESS ) {
        cout << "OK" << endl;
    }
    else {
        cout << "Failed with value " << n << endl;
    }
}
18
ответ дан 8 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: