python爬虫

一时兴起,做一个整理.不定期更新.

玩python爬虫断断续续一年了,当然实际时间可能才几小时>

当理解到这个爬虫本质就是发送HTTP或HTTPS请求并对得到的数据进行分析就比较简单了.

单件

requests 构造请求 传入headers,cookie,referer等常会校验的字段.如果是POST请求还要传入表单数据data.这里就是发送请求.当然涉及到反爬虫,这中间涉及到东西就很多了,光反爬虫就可以出本书.JS逆向,表单字段的分析等.可以多看看视频实战分析.

注:现在有requests-html,一样的作者.这个应该更好.

得到的数据需要分析.re lxml BeautifulSoup. 实际上并不常用Bs,因为解析速度比较慢,而且完全可以被代替.一般信息不多直接正则就行了.

lxml 是 Python 中一个常见的解析库,支持 HTML 与 XML 的解析,支持 XPath 解析方式

lxml解析文本为字符串后可以用xpath或cssselect选择节点.通过 lxml 解析之后的内容为一种特定类型的对象,一般称作 Element 对象. html.fromstring(string) etree.HTML(string)

cssselect就是css选择器.获取属性get() 获取文本text() text_content()

xpath全称 XML Path Language,即 XML 路径语言,XPath 可以基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。

bs Beautiful Soup 4 是 Python 的一款解析库,为了书写方便下文统一用 bs4 来描述。跟 lxml 一样,bs4 也是一个 HTML/XML 解析库,主要配合 requests 库实现爬虫程序。

bs4 库默认使用的 Python 标准库中的 HTML 解析器,即 html.parser(Python 的内置标准库),使用该方式的解析速度慢,原因是该方式在解析的时候会载入整个文档之后再解析整个 DOM 树,导致内存开销变大,性能降低,所以现在使用 bs4 的时候都是配合 lxml 库进行,本实验也围绕 bs4 与 lxml 展开

ajax XHR

移动站点的爬取

如果发现一个网站,当切换到移动端访问的时候,域名发生了变化,例如上述案例中 58 同城网站由 https://www.58.com/ 变为了 https://m.58.com/,此时大概率网站的接口也是单独为移动端研发的,只要接口是单独研发,很容易出现逻辑上的疏漏,导致移动端站点的反爬度降低,所以当你找到一个网站存在移动站点,建议针对该移动站点编写爬虫。

在爬取移动端接口的时候,需要注意一项内容,该内容为请求头中的 User-Agent 参数,前面的实验中已经对该参数进行了相关说明。该参数的内容会告知服务器客户端访问设备信息,所以在访问移动端网站的时候,建议使用特定的手机端浏览器 UA,该内容可直接在开发者工具中获取。

cookie的获取

学习方向

始终爬点图片或者文本总是没什么意思.

学习方向是从基础部分提高,到爬虫框架,到手机 APP 爬虫,再到分布式爬虫,每个领域都需要投入精力去学习与研究。

多线程爬虫

  1. Python threading 模块;
  2. Python Queue 模块;
  3. Python multiprocessing 模块;
  4. Python asyncio 模块。

反爬

基础部分除了爬虫效率外,还需要了解常见的反爬手段。之前的课程只提及了最简单的反爬手段,UA 判断,除了它以外,常见的反爬方式如下。

  1. 验证码,需要掌握验证码识别技术;
  2. IP 限制,需要学习代理相关知识;
  3. 字体反爬,JS 加密,需要学习前端加密相关知识。

爬虫框架

在实际编码中 requests 只是最简单与最常用的爬虫库,在工作中还有 2 个常用爬虫框架需要掌握。

  1. scrapy
  2. pyspider

手机 APP 爬虫

本课程中所有实验都是针对 Web 端 PC 站点进行爬取,但这只是爬虫的一个方向。

随着移动互联网时代的兴起,手机 APP 爬取,也成为了爬虫工程师日常工作之一。

如何爬取手机 APP 内容,可以从下述内容开始学习。

  1. Fiddler 工具的使用;
  2. Charles 工具的使用;
  3. mitmproxy 与 mitmdump;
  4. Appium。
-------------本文结束感谢您的阅读-------------
感谢阅读.

欢迎关注我的其它发布渠道