我最近开始了我的第一个Python项目。我对火车很感兴趣,我在我国家的铁路公司的网站上没有找到任何CSV数据,所以我决定用Scrapy来做网页抓取。然而,当我在终端中使用fetch命令来测试响应时,我总是遇到DEBUG:Crawled(403).当我尝试获取第二个链接时,终端冻结这些是我想要抓取以获取项目数据的网站:
https://www.intercity.pl/pl/site/dla-pasazera/informacje/frekwencja.html?location=&date=2022-10-25&category%5Beic_premium%5D=eip&category%5Beic%5D=eic&category%5Bic%5D=ic&category%5Btlk%5D=tlk
https://rozklad-pkp.pl/pl/sq?maxJourneys=40&start=yes&dirInput=&GUIREQProduct_0=on&GUIREQProduct_1=on&GUIREQProduct_2=on&advancedProductMode=&boardType=arr&input=&input=5100028&date=25.10.22&dateStart=25.10.22&REQ0JourneyDate=25.10.22&time=17%3A59
在看了几篇关于这个问题的文章之后,我在我的未来蜘蛛的设置中做了一些改变来克服这些错误,比如禁用cookie,使用scrapy-fake-useragent,以及改变下载延迟。我还试图只将USER_AGENT变量设置为某个随机的useragent,而不引用scrapy-fake-useragent。不幸的是,这些都不起作用。
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy.downloadermiddlewares.retry.RetryMiddleware': None,
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
'scrapy_fake_useragent.middleware.RetryUserAgentMiddleware': 401,
}
FAKEUSERAGENT_PROVIDERS = [
'scrapy_fake_useragent.providers.FakeUserAgentProvider', # this is the first provider we'll try
'scrapy_fake_useragent.providers.FakerProvider', # if FakeUserAgentProvider fails, we'll use faker to generate a user-agent string for us
'scrapy_fake_useragent.providers.FixedUserAgentProvider', # fall back to USER_AGENT value
]
USER_AGENT = 'Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
我还没有写任何代码,因为我试着先检查终端的响应。有什么我可以做的让我的项目继续吗?
1条答案
按热度按时间9rygscc11#
你的第一个链接运行良好,我能够成功地从表格中提取所有的信息,在我下面的例子中使用蜘蛛,并且不需要额外的中间件来访问它。你的第二个链接是一个死胡同,虽然在scrappy和试图访问它使用浏览器。你可能需要再次检查你的URL是准确的。