记一次scrapy抓取腾讯新闻列表

1.声明:本次只做测试用,禁止一切商业或者违法活动。
2. 配置环境
本次采用python3.6+scrapy+splash+mysql 等工具进行腾讯新闻列表抓取。由于腾讯新闻全部采用js动态渲染,爬出来得数据全部是js未渲染得东西,没有任何得数据,所以得借助splash 进行动态js渲染后,再进行爬取。这也是爬虫得一种思路。(有兴趣得同学可以看看selenium)
3.项目运行
安装python3.6就算了,scrapy安装看官网scrapy教程。splash 我使用的是docker 启动脚本

sudo docker run --name splash -p 8083:8050 scrapinghub/splash

启动后 访问 本地端口 8083 在这里插入图片描述
如上图输入你要爬取的页面地址,然后点击Render me 后会出现js渲染过的页面。
在这里插入图片描述该图中输出html则为渲染过的页面dom元素。
也就是说采用爬虫直接访问由splash渲染过的页面即可
4.页面分析
本次只需要获取新闻的标题,发布时间,来源,详细地址等。由于腾讯采用懒加载技术,导致新闻图片无法获取。
通过打开新闻页面分析可以看到。
在这里插入图片描述
在id=List 的Div里面有一个 id=List的ul 元素 ,我们所需要的新闻列表就在ul的li里面。找到了目标位置那我们就需要进行解析了,本次采用的xpath进行解析,具体方法请参考 scrapy中选择器
5.编码实现
核心代码如下

在这里插入图片描述
在这里插入图片描述
通过这里基本上就能获取到想要的数据。当然这如果新闻列表结果变化的话 还得根据实际情况进行解析数据。
6.数据持久化。
爬到的数据肯定是要存到数据库再进行分析才能体现爬虫的价值对吧。好的,先来定义数据结构字典。
在这里插入图片描述
在data目录中定义数据结构字典,然后再数据分析时导入,赋值即可。如上上图返回数据处。itme是会返回一个字典类型数据,再每一次数据处理完后,采用yiled返回这个数据。至于yiled是什么意思,请参考我i的另一篇文章 python中的yield 。此时离成功就有只有一步之遥了。
scrapy提供了该方法。在这里插入图片描述
在配置文件中的该处表示,yield item的时候会调用该方法。并且将本次itme传入这个方法。入库操作就在这里完成即可。在这里插入图片描述
正如上图,process_itme()方法名是默认的,不可变。至此爬到的数据将保存在数据库
在这里插入图片描述
至此,爬取新闻实验,告一段落。
7.总结
一入爬虫深似海,爬虫与反爬虫,就像矛与盾的关系。各种反爬技术,需要学习的还很多。(图片懒加载的问题还没解决略有遗憾)。还是要多练习,积累经验。

在这里插入图片描述
谢谢支持

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值