Python-爬虫和数据抓取

mark 下爬虫领域

博文封面

爬虫应用

  • 收集竞品或调查数据,知彼知己
  • 为数据分析领域提供海量素材

Scrapy

一套完整的爬虫框架,内置爬虫所需的一整套组件和功能。网页的请求+解析+数据提取+格式输出/存储。并且扩展性好,适合复杂性规模大的项目,但是某些特定的问题和需求还是在无法自定义框架来解决时就需要寻求一些底层的手段来解决。
Scrapy 能很好地爬取静态网页,然而无法处理 JavaScript 动态生成的内容,可以借助其他工具,也可以手动处理。

  • 浏览器调试工具拿到 ajax 请求,重播请求。
  • 对于硬编码 js 数据,可以请求js文件然后正则表达式提取想要的数据。如果时内联在html中,可以直接 scrapy selector 或 bf 提取。
  • Splash 预处理渲染 js ,同时写自定义脚本去执行一些自动化的操作。得到最终的 html 返回后再利用 Scrapy 去解析数据。
  • Selenium 无头浏览器,模拟真实的浏览器环境,可以使用 python 动态地和 DOM 进行模拟用户的交互。

BeautifulSoup

专门用于 XML/HTML 文档解析和数据提取库,无法单独使用来完成爬虫需求,因为爬虫需要先拿到数据源(请求 web 网页),然后才能根据需要解析文档提取数据。所以至少还需要一个网络请求库,比如 requests ,如果需要并发爬取,需要 multiprocessing 加持,还有很多其他要考虑和解决的各种爬虫相关问题需要自己手动去写代码解决。

如果非要拿 Scrapy 和 BeautifulSoup对比的话,那么 Scrapy 相当于 web 界的 Django,而BeautifulSoup 相当于 Jinja2。

两种结合使用才是王道。

参考链接

Scrapy Tutorial Series: Web Scraping Using Python
scrapy-redis分布式爬虫框架详解