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

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

废话不多说,直接上图在这里插入图片描述
1,在dos窗口,输入 scrapy shell https://news.sina.com.cn/gov/xlxw/2019-07-12/doc-ihytcerm3070493.shtml 回车 (注意这里是你的网址)
在这里插入图片描述
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的默认请求头是:
“User-Agent”:“Scrapy/1.1.2 (+http://scrapy.org)”
被网站封锁了,所以你需要伪造一个网站的请求头去进入这个网站
你执行
scrapy shell https://www.qiushibaike.com/ -s USER_AGENT=‘Mozilla/5.0’
神奇的发现,可以成功访问这个网站了,所以在编写爬虫文件时,记得伪造请求头

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值