java - 从scrapy中的lst刮掉链接或创建一个循环?
问题描述
我想抓取这个网站:https ://www.racingpost.com/results以获得结果。
我已经有一个爬虫,可以抓取并跟踪结果页面上的链接——但我不能再回到网站上显示的 6 或 7 天。较早的结果可通过“resultsfinder”(可悲的是 java 脚本)获得,较早的比赛的其他来源(如马的形式)也是如此。
我已经尝试学习抓取 java 来获取链接,虽然它很有趣,但我想知道是否没有更简单的方法,因为结果页面地址的设计方式非常方便:
它只是https://www.racingpost.com/results/ + 1990-02-08 或 2021-02-11 或任何其他日期。
所以我认为设计蜘蛛从循环或预定义的链接列表中抓取链接可能更容易。
我如何设计一个在 1990 年 1 月 1 日到现在为止在scrapy 中运行的循环,或者为此创建一个预定义的链接列表更好?
解决方案
在蜘蛛中生成日期并将它们附加到链接中,无需创建预定义的链接列表。
from datetime import date, timedelta
# Initialize variables
start_date = date(1990, 1, 1)
end_date = date.today()
crawl_date = start_date
base_url = "https://www.racingpost.com/results/"
links = []
# Generate the links
while crawl_date <= end_date:
links.append(base_url + str(crawl_date))
crawl_date += timedelta(days=1)
然后遍历生成的列表,或者只是从 while 循环中调用 parse 函数,而不是将链接添加到列表中。
示例结果:
>>> links
[
"https://www.racingpost.com/results/1990-01-01",
"https://www.racingpost.com/results/1990-01-02",
"https://www.racingpost.com/results/1990-01-03",
"https://www.racingpost.com/results/1990-01-04",
"https://www.racingpost.com/results/1990-01-05",
...
]
推荐阅读
- yarnpkg - 未找到纱包
- arrays - MATLAB:如何从输入参数构造块双对角矩阵
- matlab - 在 Julia 中高效实现 Matlab 的“查找”功能
- javascript - Sanity CMS,在文档中引用数组
- git - 如何跨功能分支保持正确的合并顺序?
- java - Java代码只输出main方法,跳过静态方法
- javascript - 如何下载 url 中没有扩展名的文件?或绕过下载提示?
- perl - 我应该如何处理 Activestate 从他们的 Perl 中删除 PPM?
- python - 为什么 sorted 不能正确排序数组?
- node.js - 如何使用 Express 在 NodeJS 的 errorHandler 中间件中返回 JSON 响应?