翻书《Python3网络爬虫开发实战》(3/15)

2020-03-27 小木屋借到了这本书,周末可以换换脑。

最近拿到了一本书崔庆才写的《Python3网络爬虫开发实战》,挺佩服这个作者的,一门基础出过书、视频、最近还有拉钩教育上的一门课,新书应该也快出版了。是学习的榜样。

属性
书名 Python 3网络爬虫开发实战
作者 崔庆才
出版社 人民邮电出版社
出版年 2018-4
ISBN 9787115480347
页数 608
豆瓣 https://book.douban.com/subject/30175598/

全书600多页,太厚了。总共15章。

1 开发环境配置

这里直接使用 pipenv 了,可以看我栏目里的其他文章。

请求库

requests

selenium

Selenium 是自动化测试工具,可以驱动浏览器进行特定的操作。

Selenium 中文文档

安装 chromeDriver,可以选择到淘宝镜像下载,下载对应版本解压。

mac移动到 mv ./chromedriver /usr/local/bin/

运行Python脚本:

1
2
from selenium import webdriver
browser = webdriver.Chrome()

PhantomJS

无界面可脚本编程的webkit浏览器引擎。Selenium支持PhantomJS,这样运行时候就不用弹浏览器了。

只说mac了。还是去淘宝镜像下载。不过这玩意已经不更新了,上次更新还是三年前。这里我简略学习。

aiohttp

之前提到的 requests 是阻塞http请求库,这里有一个异步的 aiohttp

pyton3.5 支持 async/await .

书中后续维护代理池时候,会用异步方式检测大量代理的运行情况。

解析库

抓取了页面代码,需要提取信息。除了正则,也可以 lxml Beautiful Soup pyquery等。

lxml

支持html xml解析,支持xpath解析方式。

Beautiful Soup

beautifulsoup4 from bs4 import BeautifulSoup4

pyquery

提供了类 jQuery的语法,显然这个方便。

tesserocr

图片ocr验证码。先安装 tesserocr

mac

1
2
3
4
brew install imagemagick
brew install tesseract
brew install tesseract-lang
pip3 install tesserocr pillow

数据库

mysql和mongo和 redis,

这里还是使用docker一套走

mongo

1
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=xinbao  -e MONGO_INITDB_ROOT_PASSWORD=12345678 -v ~/data-mongo:/data/db --name simple-mongo mongo:3.6-xenial
1
2
3
4
5
6
7
8
docker run -p 6379:6379 -d redis:latest
redis-server #跑

docker exec -it xxx redis-cli -h 0.0.0.0 -p 6379 # id要换成自己的
> ping #Pong 测试
> set name xinbao # 设置 获取值
> get name
> info # 查看信息

mysql

1
2
3
4
# 第一次启动
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -v ~/data-mysql:/data --name simple-mysql mysql:5.7
# 后续启动
docker start simple-mysql

说完安装,说GUI管理。

Python如何驱动

1
2
3
pip3 install pymysql pymongo redis
# redis dump 数据导入导出
#需要安装ruby 我觉得我不需要

web库

1
2
pip install flask # 后面用来 flask+redis 维护代理池和cookies池
pip install tornado # 支持异步的web框架 后面 tornado+redis 搭建adsl拨号代理池

app爬取

charles 不必说,gui很方便

mitmproxy也是https抓包,特点是控制台。先跳过了。

appium,移动端自动化测试必备。 npm i -g appium

然后安装 android studio,另一个领域了。

爬虫框架

量大了手写就费劲了,得上框架: pyspider scrapy

pyspider 是国人出的。依赖 phantomjs

scrapy 依赖多。可以考虑 anaconda 安装

scrapy-splash 支持js渲染的工具。 或许 scrapy-redis 分布式模块

分布式

分布式爬虫。对于 scrapy有一个扩展 scrapyd可以远程管理scrapy任务,包括部署源码、启动任务、监听任务等。还有 scrapyd-client scrapyd api

还有就是 docker部署。然后说明docker如何安装使用。

真的是门学问。

2 爬虫基础

快速过http基本原理 web基本原理

爬虫基本原理。获取网页 – 提取信息 – 保存数据 – 自动化程序

cookies 会话维持,因为http是无状态的。第一次请求会set-cookie ,后续检查cookies对应的会话,从而判断用户状态。

代理基本原理。常见是单位时间ip请求次数。使用代理。爬虫代理不断切换代理,防止被封。

3 基本库的使用

本章,使用库来发起请求,不用关心底层实现。

我打算跳过 urllib httplib2

urlib

python3 里统一了http请求库。可以发请求 request,错误处理error,解析处理parse,识别robot文件tobotparse

requests

内置提供的不方便,一般情况下回使用封装过的,更顺手,就不得不提 requests了。

暂停。

请我喝杯咖啡吧~