【问题标题】:Condition based scraping using selenium python使用 selenium python 进行基于条件的抓取
【发布时间】:2021-08-10 07:10:33
【问题描述】:

我想抓取为期 6 天的日期和相应的新闻标题/文章——比如今天运行 python 脚本时,它应该从今天(8 月 10 日)到 8 月 4 日抓取标题/文章。 截至目前,我可以从here 抓取所有日期的日期和标题/网址。 这是相同的代码

    websites = ['https://www.thespiritsbusiness.com/tag/rum/']
    for spirits in websites:
        browser.get(spirits)
        time.sleep(1)

        news_links = browser.find_elements_by_xpath('//*[@id="archivewrapper"]/div/div[2]/h3')
        n_links = [ele.find_element_by_tag_name('a').get_attribute('href') for ele in news_links]
        dates = browser.find_elements_by_xpath('//*[@id="archivewrapper"]/div/div[2]/small')
        n_dates = [ele.text for ele in dates]
        print(n_links)
        print(n_dates)

但是,我如何从今天开始的最后 6 天刮一段?有什么想法吗?

【问题讨论】:

  • 使用datetime模块。
  • @Ram :我也想过,但是网站文章中提到的日期都是文本格式的。所以如果阈值到 6 然后 datetime.today()- 从网站是我的想法......但是..idk。
  • 然后从该字符串中提取日期。

标签: python selenium selenium-webdriver web-scraping


【解决方案1】:

查看第2页的url是

https://www.thespiritsbusiness.com/tag/rum/page/2/

这基本上意味着,对于下一次迭代,您需要在 URL 中添加 /page/2/

你可以有一个网站列表:

websites = ['https://www.thespiritsbusiness.com/tag/rum/', 'https://www.thespiritsbusiness.com/tag/rum/page/2/', 'https://www.thespiritsbusiness.com/tag/rum/page/3/']

等等,以实现这一目标。

或者您也可以通过编程方式执行此操作:-

page_number = 1
websites = ['https://www.thespiritsbusiness.com/tag/rum/']
for spirits in websites:
        browser.get(spirits + f"page/{page_number}/")
        page_number = page_number + 1

【讨论】:

  • 您好,巡航,感谢您的即时回复,在第 2 页上,但是有日期的标题超出了阈值 - 即 6 天。假设我今天想在 8 月 10 日运行脚本,那么-> 脚本应该给我从 8 月 4 日、8 月 5 日到 8 月 10 日的 url 结果。
  • 我看到它超出了第 1 页本身,我在第 1 页看到了 May 20th, 2021
  • 是的..我只想在最后 6 天刮一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2018-07-20
  • 2020-03-13
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多