scrapy爬取网页数据是返回[ ],或者说爬取不到数据的排查方法

可能的原因:
1,ip封锁爬取
2,xpath路径不对
3,xpath路径出现font,tbody标签
4,xpath路径不够明确
5,robot协议
6,请求头封锁

废话不多说,直接上图scrapy爬取网页数据是返回[ ],或者说爬取不到数据的排查方法_第1张图片
1,在dos窗口,输入 scrapy shell https://news.sina.com.cn/gov/xlxw/2019-07-12/doc-ihytcerm3070493.shtml 回车 (注意这里是你的网址)
scrapy爬取网页数据是返回[ ],或者说爬取不到数据的排查方法_第2张图片
2,观察上图1号位置,response的返回状态码是200(200~300间都可以),说明返回成功!执行2号位置的 view(response) 就可以进入你要爬取的网页了,这说明了你要爬取的网页没有在IP上对你进行反爬

http状态码200,300,404等是什么意思?可以参考以下网址
https://www.cnblogs.com/cjwxf/p/6186287.html

3,3号位置我执行 response.xpath(’/html/body/div[3]/h1/text()’).extract()
这里的xpath路径是我在网页源代码中copy来的,我要显示他的文本内容,它返回了一个空值,这告诉我copy的东西不一定是有用的,当然正常情况下是有用的,建议xpath路径自己写,不断测试,copy的xpath路径仅做内容可以爬取的检测

4,之前有碰到过在xpath路径中有font或者是tbody标签的,把它去掉改成 ***/***,之后内容可以正常显示,说明scrapy识别不了这两个标签

5,4号位置的xpath路径是自己写的,观察你要爬取网页html结构,对要爬取的元素位置,最好把它的类名或者是id名写上,以保证路径的唯一性

6,如果在dos窗口中已经可以提取出要爬取的内容了,说明xpath路径正确,但是在编写的爬虫文件中,执行spider却不能爬取到结果,而在执行爬虫程序的dos窗口中,你仔细观察,发现有robot错误,response的返回编码是503之类的异常编码,那就需要你在setting.py中,
把ROBOTSTXT_OBEY = True改为 ROBOTSTXT_OBEY = False。

7,请求头封锁:比如你执行scrapy shell https://www.qiushibaike.com/
这个网址在浏览器中可以打开,但是scrapy中不行,执行后出现下图连接错误scrapy爬取网页数据是返回[ ],或者说爬取不到数据的排查方法_第3张图片
这是因为scrapy的默认请求头是:
“User-Agent”:“Scrapy/1.1.2 (+http://scrapy.org)”
被网站封锁了,所以你需要伪造一个网站的请求头去进入这个网站
你执行
scrapy shell https://www.qiushibaike.com/ -s USER_AGENT=‘Mozilla/5.0’
神奇的发现,可以成功访问这个网站了,所以在编写爬虫文件时,记得伪造请求头

你可能感兴趣的:(scrapy爬虫)