首页 > 解决方案 > 遍历一个 url 列表

问题描述

我创建了一个脚本,该脚本可以访问一个房地产拍卖网站,该网站监控价格并提醒我任何变化。我最初让它一次监控 1 个 url。我现在需要它来监控超过 1 个 url 并同时执行相同的确切过程。

我试过循环输入网址,browser.get但这似乎对我不起作用(如果我写错了,可能是这样)。但我需要它来打开一堆新标签并转到网址,或者以其他方式监控所有内容。

这是我所有的代码

import time
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import ssl
from twilio.rest import Client
from twilio.rest import TwilioRestClient
from bs4 import BeautifulSoup as soup

urls = ['https://www.hubzu.com/property/90089436968-730-Trillium-Ln-Lilburn-GA-30047',
'https://www.hubzu.com/property/90016097522-225-Marriott-Ave-Schenectady-NY-12304',
'https://www.hubzu.com/property/90016098285-17-Spring-Meadows-Dr-Ormond-Beach-FL-32174'
]

browser = webdriver.Chrome()

# Start URL switch tryouts.

while True:
    for url in urls:
        browser.get((url))


       #This is the process i need all urls to do.
        time.sleep(2)
        address = soup(browser.page_source, 'html.parser').find('span', {'class':'h1'}).text
        propertyprice = browser.find_element_by_css_selector('span.current-bid')
        currentBidText = propertyprice.text
        try:                                
            WebDriverWait(browser, 90000).until_not(
                EC.text_to_be_present_in_element((By.CSS_SELECTOR, 'span.current-bid'), currentBidText)
                )
        finally:
            print("+++ Send notifications.")
            account_sid = "***"
            auth_token = "***"
            client = Client(account_sid, auth_token)

            PhoneNumber1 = "+***"
            PhoneNumber2 = "+***"
            print("+ Send notifications to: ", PhoneNumber1, " and ", PhoneNumber2)

            sendTo1 = "{\"binding_type\":\"sms\",\"address\":\"" + PhoneNumber1 + "\"}"
            print("+ sendTo1: ", sendTo1)
            sendTo2 = "{\"binding_type\":\"sms\",\"address\":\"" + PhoneNumber2 + "\"}"
            print("+ sendTo2: ", sendTo2)

            notify_service_sid = "***"
            notification = client.notify.services(notify_service_sid).notifications.create(
                    body='There has been a change at: '+address,
                    to_binding=[sendTo1, sendTo2]
                )

            print("+ Notification SID: ", notification.sid)

            print("+++ Exit.")
    continue

PS:请记住,如果拍卖已过期,则会出现错误。因为找不到span.current-bid

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


推荐阅读