【问题标题】:Basic web scraping in Python [closed]Python中的基本网络抓取[关闭]
【发布时间】:2018-04-17 05:40:15
【问题描述】:

我在使用 Python 进行网络抓取方面需要您的帮助。我想在下面抓取这个网站,以获取从今天起 365 天前的一些信息。但我无法正确更改 URL。我只有第一天。这是我的第一个项目,我被卡住了。

我的网址: https://crossfit.com/workout/2017/11/04

我要获取的网址: https://crossfit.com/workout/2017/11/03

等等。

这是我的实际代码:

from bs4 import BeautifulSoup as bs
from time import sleep
from datetime import date, datetime, timedelta

base_url = 'https://www.crossfit.com/workout/'
count = 365
scrape_date = date.today()
sleep(2)
bs_obj = bs(driver.page_source, 'html.parser')
boxes = bs_obj.find_all('div',{'class':'wod active'})

for i in range(count):
    url = base_url + scrape_date.strftime('%Y/%m/%d')
    for box in boxes:
            dia = box.find('h1').text
            wod = box.find('p').text
    scrape_date -= timedelta(days=1)

print(dia, wod)

【问题讨论】:

  • 我用 for 循环创建了一个列表。但是我无法使用基本 URL 加入此列表,以便使用新的循环增量进行更改。

标签: python web web-scraping


【解决方案1】:

我建议您查看 BeautifulSoup python 库。您必须在您的计算机上安装该模块,但它可能是最广泛使用和最用户友好的网络抓取库。

此外,它还有大量文档,以及大量示例,因为有很多人使用它。

希望对您有所帮助。祝你好运。

【讨论】:

    【解决方案2】:

    抓取该网站的最简单方法是使用 datetime 数学。如果您需要更多资源,Googlethe documentation 是您的朋友。

    from datetime import date, datetime, timedelta
    
    URL_BASE = "https://www./crossfit.com/workout/"
    count = 365
    scrape_date = date.today()
    for i in range(count):
        url = URL_BASE + scrape_date.strftime("%m/%d/%Y")
    
        # Do your scraping here....
    
        scrape_date -= timedelta(days=1)
        count -= 1
    

    【讨论】:

    • 我试过你的指示,但我只有第一次约会。
    • 现在再试一次
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多