【问题标题】:using selenium/chromedriver to loop through multiples pages of a url and download the html for each page of the url使用 selenium/chromedriver 循环遍历 url 的多个页面并下载 url 的每个页面的 html
【发布时间】:2020-07-22 21:43:50
【问题描述】:

我有一个博客网站,网站上有多页帖子。我需要遍历网站上的每个页面并下载每个页面的 html 代码并将其存储在列表中。

我正在使用 Chromedriver 打开每个网站。到目前为止,我已经尝试使用 range 函数来遍历总页数(16)


from selenium import webdriver
import os
import time
from webdriver_manager.chrome import ChromeDriverManager

list_88 = []
for i in range(17):

    chromedriver_path = os.getcwd() + '/chromedriver'
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get('https://eller.arizona.edu/departments-research/centers-labs/entrepreneurship/news-events/news?page=0')
    link_url = driver.find_element_by_tag_name('a')
    time.sleep(10)
    html = driver.page_source
    list_88.append(html)
    driver.close()

但是,当我运行此代码时,它会反复打开相同的页面并下载相同的 html。我知道我需要在 for 循环中的某处指定 (i) 以便每次打开不同的页面,但我对 chromedriver 不太熟悉。我尝试附加:

driver.get('https://eller.arizona.edu/departments-research/centers-labs/entrepreneurship/news-events/news?page=0').format(i)

但我收到错误消息:

'NoneType' object has no attribute 'format'

当我使用 requests.get 时,我使用了类似的东西:

for i in range(15):
    url = "https://eller.arizona.edu/departments-research/centers-labs/entrepreneurship/news-events/news?page=0"
    reqs = requests.get(url)    

这对我有用,但是我想使用 chromedriver 来做到这一点。有什么想法可以从一个 url 遍历多个页面并将 url 的每个页面中的 html 下载到列表中吗?

谢谢!

【问题讨论】:

    标签: python for-loop format selenium-chromedriver range


    【解决方案1】:

    您的网址格式不正确。应该是:

    # add curly brackets as a placeholder for i
    driver.get('https://eller.arizona.edu/departments-research/centers-labs/entrepreneurship/news-events/news?page={}').format(i)
    

    这是适用于我循环浏览页面的代码:

    from selenium import webdriver
    import time
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument('-start maximized')
    driver = webdriver.Chrome(options=chrome_options)
    
    for i in range(17):
        driver.get('https://eller.arizona.edu/departments-research/centers-labs/entrepreneurship/news-events/news?page={}'.format(i))
        time.sleep(2)
    ``
    

    【讨论】:

    • 您好,蒂莫西,感谢您的帮助。即使我尝试使用大括号作为 i 的占位符,我仍然收到“NoneType”对象没有属性“格式”错误。你能在你的机器上重现我的代码吗?
    • 我更新了答案以包含循环浏览页面的代码。我对此进行了测试,它可以工作。
    • 这对我有用!感谢您帮助我,我很感激。
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-05-15
    • 2020-08-30
    • 2018-04-15
    相关资源
    最近更新 更多