这是我的代码:
# -*- 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来抓取你需要的数据。