Python - просмотр словаря гиперссылок - PullRequest
0 голосов
/ 11 июля 2020

Этот Python скрипт Selenium проверяет, есть ли товар на определенном веб-сайте в наличии или нет. В настоящий момент скрипт проверяет по одной ссылке за раз.

Теперь я бы хотел, чтобы скрипт проверял несколько гиперссылок (хранящихся в dict), а не только одну гиперссылку.

Как мне это получить циклически переходить по ссылкам одну за другой?

import ...

from links import my_links  #this is my dictionary of links

URL = my_links['link1'] #start at the first hyperlink in the dictionary
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.39 Safari/537.36'
headers = {'User-Agent': user_agent}
chrome_options = webdriver.ChromeOptions();
#chrome_options.add_argument("--start-maximized");
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]);
chrome_options.add_experimental_option('useAutomationExtension', False);

#Check for stock
def stock_check():
    while True:
        now = datetime.datetime.now()
        page = requests.get(URL, headers=headers)
        soup = BeautifulSoup(page.content, 'html.parser')
        stockQuery = soup.findAll("div", {"class": "add-to-basket-btn"}) #looks for add to cart button
        if stockQuery:
            break
        else:
            print('Item not available.')
            time.sleep(300)
    print('Item available.')
stock_check()
exit()

Это мой словарь ссылок

my_links = {
    'link1': '<<item link here>>',
    'link2': '<<item link here>>',
    'link3': '<<item link here>>',
    'link4': '<<item link here>>',
}

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Измените функцию stock_check(), чтобы включить параметр URL. Затем повторите python dict, используя .items():

#Check for stock
def stock_check(URL):
    while True:
        now = datetime.datetime.now()
        page = requests.get(URL, headers=headers)
        soup = BeautifulSoup(page.content, 'html.parser')
        stockQuery = soup.findAll("div", {"class": "add-to-basket-btn"}) #looks for add to cart button
        if stockQuery:
            break
        else:
            print('Item not available.')
            time.sleep(300)
            return 
    print('Item available.')

for key, URL in my_links.items():
    print("ID:", key, "Link:", URL)
    stock_check(URL)
exit()
1 голос
/ 11 июля 2020

Метод keys() помогает сделать его итеративным, что поможет вам циклически перебирать все ключи в вашем словаре.

С помощью метода keys():

for link in my_links.keys():
    URL = my_links[link] #start at the first hyperlink in the dictionary
...

Вы также можете использовать метод values() и метод items(). Метод values() циклически перебирает все значения вашего словаря

С помощью метода values():

for link in my_links.values():
    URL = link #start at the first hyperlink in the dictionary
...

Метод items() циклически перебирает все ключи и значения вашего словаря .

Методом items():

for key,link in my_links.items():
    URL = my_links[key] # Option 1
    URL = link # Option2
...

и все, дайте мне знать, помогло ли это!

Спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...