调试:已爬网(404)

  • 本文关键字:调试 python scrapy
  • 更新时间 :
  • 英文 :


这是我的代码:

# -*- coding: utf-8 -*-
import scrapy

class SinasharesSpider(scrapy.Spider):
name = 'SinaShares'
allowed_domains = ['money.finance.sina.com.cn/mkt/']
start_urls = ['http://money.finance.sina.com.cn/mkt//']
def parse(self, response):
contents=response.xpath('//*[@id="list_amount_ctrl"]/a[2]/@class').extract()
print(contents)

我在setting.py.中设置了一个用户代理

然后我得到一个错误:

2020-04-27 10:54:50 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://money.finance.sina.com.cn/robots.txt> (referer: None)
2020-04-27 10:54:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://money.finance.sina.com.cn/mkt//> (referer: None)

那么我该如何消除这个错误呢?

收到http statuscode404是因为Scrapy默认情况下正在检查/robots.txt。在你的情况下,这个网站不存在,所以收到了404,但这没有任何影响。如果您想避免检查robots.txt,可以在settings.py.中设置ROBOSTXT_OBEY=False

然后成功访问网站(http statuscode200(。没有打印任何内容,因为根据您的xpath选择,没有选择任何内容。您必须修复您的xpath选择。

如果您想测试不同的xpath或css选择,以了解如何获得所需的内容,您可能需要使用交互式scrapy shell:
scrapy shell "http://money.finance.sina.com.cn/mkt/"

你可以在这里的官方scrapy文档中找到一个scrapy shell会话的例子。

也许你的ip被网站禁止了,你也可能需要添加一些cookie来抓取你需要的数据。

最新更新