美文网首页我爱编程
Python Scrapy V2EX 爬虫

Python Scrapy V2EX 爬虫

作者: 王大屁帅2333 | 来源:发表于2017-08-18 23:21 被阅读239次

    Python 语言

    大部分人学 Python 都是作为第二语言来学的, 所以既然已经有了其它语言的基础, 我就推荐 2 个小而美的教程, 百页左右, 不啰嗦

    先看完这 2 个教程其一, 就可以开始写 Python 了... 遇到不明确的地方再去详细了解, 比如 generator, yield

    HTML & CSS & JS

    w3school 是入门基础, 要用爬虫获取数据, 必须先了解 HTML 的结构

    爬虫

    网站爬虫的大体思路是 :

    1. 模拟网站登录请求
    2. 网络请求获取网页源代码
    3. CSS selector 或 xpath 选定需要的元素, 获取内容属性等
    4. 结构化数据并存储到数据库
    5. 定时,并发执行爬虫

    Python 爬虫

    要写一个爬虫, 可以用一些基本的库, 也可以用爬虫框架 :

    基本库

    1. Beautiful Soup : 从 HTML 获取指定的节点及数据
    2. Requests: HTTP for Humans : 网络请求库

    最核心的就是这 2 个模块, 其它的数据存储, 定时任务, 多线程等都是锦上添花

    不错的教程
    Python爬虫利器一之Requests库的用法
    Python爬虫利器二之Beautiful Soup的用法
    Scrapy笔记11- 模拟登录
    Scrapy随机更换User-Agent和实现IP代理池

    爬虫框架

    1. Scrapy
    2. PySpider

    由于公司原因, 我接触的是 Scrapy

    Scrapy 是一个相对成熟的框架, 多线程, 并发数, 中间件, 超时, 自定义 header, UA, 数据库存储, Log, 部署 等等都有成熟的解决方案和示例, 这也是我选择使用它的原因.

    不错的教程
    scrapy爬虫框架教程(一)-- Scrapy入门
    利用Scrapy爬取所有知乎用户详细信息并存至MongoDB(附视频和源码)

    部署

    Scrapy 官网 可以看到, 官方的部署指南,

    动态页面

    1. 有些页面的数据是 JS 动态加载的, 比如懒加载图片, 滚动加载更多等
      • 此时, 我们直接发送网络请求获取到的页面, 并没有执行 JS 代码, 所以懒加载的元素都尚为加载出来, 我们需要下面 2 个库.
    2. Python 代码控制 PhantomJS 加载页面, 然后 Selenium 模拟用户点击, 滚动屏幕, 触发网页中的 AJAX 加载更多内容的请求, 等元素都加载完全, 再爬取数据

    Selenium : web的自动测试工具, 模拟点击按钮, 滚动页面等
    PhantomJS : 没有界面的浏览器

    不错的教程
    Python爬虫利器五之Selenium的用法
    Python爬虫利器四之PhantomJS的用法

    其它

    1. 又或者, 你学习爬虫只是想快捷的抓取数据, 你可以尝试下面的软件(网站), 可以不用写代码, 可视化的编写抓取数据的任务
    2. 如果你没有自己的服务器, VPS , 可以使用

    mLab : 云 MongoDB 服务

    Ref

    woodenrobot 的 blog
    崔庆才的个人博客

    最后

    文章是我爬取 V2EX 的学习整理

    我的 V2 爬虫 : V2EX_Crawler

    相关文章

      网友评论

        本文标题:Python Scrapy V2EX 爬虫

        本文链接:https://www.haomeiwen.com/subject/gduzrxtx.html