gpt4 book ai didi

python - 寻找更好的解决方案来使用 beautifulsoup 抓取多个网页

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:18 25 4
gpt4 key购买 nike

我正在尝试从网站上抓取体育比赛的结果。该网站有所有比赛的所有结果,非常完美,但它们在很多页面上。每个页面代表一天,我正在收集多个月的游戏数据,因此需要输入相当多的网址。

我现在设置的方式是,我有一个基本 URL,以及一个可以使用 for 循环附加的日期列表。这种方法效果很好,但我很好奇在输入我将要抓取的许多日期之前是否有更好的方法。

    url = 'http://www.url.com?'

#this list would hold hundreds of dates
dates = ['month=11&day=1&year=2016', 'month=11&day=2&year=2016', ...]

for i in dates:
page = requests.get(url+i)
soup = BeautifulSoup(page.text, 'html.parser')

#and so on, this part works as intended

最佳答案

如果您确实希望在每一天进行搜索,则可以使用 datetimetimedelta 来迭代所有可能的日期。给它一个开始日期,然后可以一次提前一天直到结束日期(可以是今天的 datetime.now() ):

from datetime import datetime, timedelta

base_url = "http://www.url.com?month={}&day={}&year={}"

search_date = datetime(2016, 11, 1)
end_date = datetime(2017, 1, 1)
one_day = timedelta(days=1)

while search_date < end_date:
url = base_url.format(search_date.month, search_date.day, search_date.year)
print(url)

page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')

search_date += one_day

这会给你类似的东西:

http://www.url.com?month=11&day=1&year=2016
http://www.url.com?month=11&day=2&year=2016
http://www.url.com?month=11&day=3&year=2016
http://www.url.com?month=11&day=4&year=2016
.
.
.
http://www.url.com?month=12&day=29&year=2016
http://www.url.com?month=12&day=30&year=2016
http://www.url.com?month=12&day=31&year=2016

更好的方法是使用页面上的next 链接。为此,需要实际页面的 URL。然后可以使用 BeautifulSoup 轻松提取链接。

关于python - 寻找更好的解决方案来使用 beautifulsoup 抓取多个网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com