本文主要对爬取过程中所用到的知识做简单总结,最后有项目链接。

一、项目简介

本项目利用python的scrapy框架+selenium模拟登陆微博来爬取带有关键字的微博及微博下面的评论(1 、2级评论)。

当时自己比较关注“小凤雅事件”,而微博又是舆论的战场,就想爬取“小凤雅事件”的相关微博以及评论,看看大家的关注点在哪里,于是就行动起来了。

下面是对主要技术的介绍。

二、scrapy介绍

1、Scrapy 组件

组件Scrapy Engine

引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。

调度器(Scheduler)

调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。

下载器(Downloader)

下载器负责获取页面数据并提供给引擎,而后提供给spider。

Spiders

Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。Item PipelineItem Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。

下载器中间件(Downloader middlewares)

下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 下载器中间件(Downloader Middleware) 。

Spider中间件(Spider middlewares)

Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 Spider中间件(Middleware) 。

2、数据流(Data flow)

Scrapy中的数据流由执行引擎控制,其过程如下:

1.引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。

2.引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。

3.引擎向调度器请求下一个要爬取的URL。

4.调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。

5.一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。

6.引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。

7.Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。

8.引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。

9.(从第2步)重复直到调度器中没有更多地request,引擎关闭该网站。

三、python的selenium模块

它是一个用于Web应用程序测试的工具,可直接运行在浏览器中。

支持浏览器IE/Mozilla Firefox,Safari,Google Chrome,Opera等浏览器。

主要功能:

(1)测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。

(2)测试系统功能——创建回归测试检验软件功能和用户需求。

(3)支持自动录制动作和自动生成.Net、Java、Perl、Python等不同语言的测试脚本。

(4)爬虫,可以模拟人点击鼠标的过程,防止被发现是爬虫程序。缺点是速度较慢。

四、应对网站反爬策略的措施

1、模拟登陆

2、设置代理IP池

3、设置User-Agent池

4、设置等待时间

5、采用分布式爬取(本项目没用到)。

微博反爬做的很厉害,虽然用了一些措施,还是会被发现......爬一段时间,会自动跳转到微博评论比较少的页面,所以爬取的评论并不多。如果有大神有好的办法能够解决这个问题,希望能指导一下我这个小弱鸡,谢谢!!!!

emmmm,最后,附上项目链接。

转github https://github.com/linlin0212/scrapy-selenium-SinaSpider

python爬虫——scrapy+selenium爬取新浪微博及评论相关推荐

  1. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  2. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  3. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  4. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  5. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  6. python爬虫:Selenium爬取B站视频标题、播放量、发布时间

    上次尝试了利用Ajax机制爬取B站视频播放量等数据(链接在下方),但是发现响应的JSON数据中没有发布时间的数据,这次决定用Selenium试一下. python爬虫:Ajax爬取B站视频标题.播放量 ...

  7. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  8. python爬虫库scrapy_使用Python爬虫Scrapy框架爬取数据

    时隔数月,国庆期间想做个假期旅游的分析展示. 1.通过Python爬取旅游网站上数据,并存储到数据库 2.通过Echart/FineReport/Superset等数据分析工具对数据展示 环境: Wi ...

  9. Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: python小爬虫 PS:如有需要Python学习资料的小伙伴可以 ...

最新文章

  1. 在SQL Server 2008中配置文件流(FILESTREAM)
  2. window mysql安全设置_mysql安全配置方案
  3. python 可变参数 关键字参数_Python之 可变参数和关键字参数
  4. 简便方法创建自签名证书
  5. VTK:结构化网格之VisualizeStructuredGridCells
  6. ​实时音视频服务的“既要、又要、还要”
  7. MFC 多文档源码分析1
  8. linux shell sql赋值,Linux下shell执行SQL
  9. urllib2的用法
  10. 使用Python+tkinter编写电脑桌面放大镜程序
  11. python连接不上数据库_详解pycharm连接不上mysql数据库的解决办法
  12. 使用vmware12安装Ubuntu 遇到的两个问题和解决
  13. JSP项目《教师年终个人成果统计系统的设计与应用》实战(一)——密码加密算法...
  14. “实时SPC软件”的“实时”性指什么?一探究竟!
  15. php 银行支付通道_基于PHP框架的聚合四方支付系统
  16. win2019微软更新服务器,微软2019 Windows 10更新十一月版正式版推送
  17. 选择排序 简单选择排序 直接选择排序的区别
  18. Android 8.0中各种通知写法汇总
  19. 【金猿产品展】沃丰科技GaussMind——用技术提升客户体验
  20. hypermill后处理构造器安装_铁道车辆不可缺少的部件——远心集尘器

热门文章

  1. 功能超全的库存管理系统,拿来学习真香
  2. 【项目笔记_RP552D】rtthread winusb 修改 vid 与 pid
  3. CSS之border
  4. 模具冲压与模具设计知识点
  5. 在GT4 Client端EndpointReferenceType的标准序列化方法
  6. 青岛房产证信息查询步骤
  7. 2015.07.06 大三即将结束,进行一下本学期总结。
  8. [机房练习赛4.7] 深意 KMP
  9. 详解如何进入、退出docker容器的方法
  10. Reference Counted Smart Pointers