【问题标题】:Python loop through pages of website using SeleniumPython 使用 Selenium 循环浏览网站页面
【发布时间】:2020-03-13 17:25:33
【问题描述】:

我在这方面花了很多时间,希望能得到一些帮助……我是 Python 和网络抓取的新手。

我正在使用凭据访问网站,因此无法共享链接,但它相当简单,并且我拥有大部分代码。使用 Selenium,我可以访问网站、输入我的凭据、访问表、提取我想要的数据、创建数据框,然后转到下一页。但是,我想自动循环浏览所有页面(有一些暂停和对网站友好)并将每个页面附加到一个主页面。这是我目前所拥有的:

driver = webdriver.Chrome()
driver.get('website')
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")

username.send_keys("username")
password.send_keys("password"+"\n")

driver.implicitly_wait(20)

table = driver.find_element_by_id('preblockBody')

information = []
job_elems = table.find_elements_by_xpath("//*[contains(@class,'pbListingTable')]")
for value in job_elems:
    #print(value.text)
    information.append(value.text)

nxt=driver.find_element_by_xpath("//a[contains(@href, 'gotoNextPage(2)')]")
driver.execute_script("arguments[0].click();", nxt)

我认为最好的方法是找到所有包含“gotoNextPage”的引用并创建一个循环,但我不确定该怎么做。非常感谢任何帮助。

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    更新1:

    我发现在我使用“下一步”而不是单击特定的“gotoNextPage”元素时会有所帮助。这是我的新代码,但是,它只附加最后一页信息,而不是在浏览页面时附加。这非常接近!

    driver = webdriver.Chrome()
    driver.get('website')
    username = driver.find_element_by_id("username")
    password = driver.find_element_by_id("password")
    
    username.send_keys("user name")
    password.send_keys("password"+"\n")
    
    while True:
        driver.implicitly_wait(30)
        table = driver.find_element_by_id('preblockBody')
        information = []
        job_elems = table.find_elements_by_xpath("//*[contains(@class,'pbListingTable')]")
        for value in job_elems:
        #print(value.text)
            information.append(value.text)
    
        try:
            driver.find_element_by_partial_link_text('Next').click()
        except:
            break
    
    driver.quit()
    print(information)
    

    【讨论】:

    • 我能够通过将我的空列表排除在循环之外来解决这个问题...简单但循环可能会让像我这样的新手感到困惑
    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多