4.爬虫相关
本章内容:
- 爬虫基本原理
- 请求库
- 解析库
- 存储库
- 高性能
一.爬虫基本原理
如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据。
爬虫所需工具:
请求库:requests,selenium
解析库:正则,beautifulsoup,pyquery
存储库:文件,MySQL,Mongodb,Redis
框架:scrapy
二.请求库
requests(可以只拿页面内容,轻量):
使用requests可以模拟浏览器的请求,requests库发送请求将网页内容下载下来以后,并不会执行js代码,需要自己分析目标站点发起新的request请求
我们要加上一些请求头Referer,User-Agent,
requests.session()会自动帮我们保存cookie信息
有时候页面内容为gb2312,而requests的默认编码为ISO-8859-1,如果不设置为gbk会中文乱码,
我们使用爬虫的时候记得加上代理,不然同一个Ip访问过于频繁会有被封掉的风险,
selenium(用于自动化测试,可以做复杂的验证):
一般用隐式等待,
在交互动作比较难以实现的时候可以自己写JS(万能)
三.解析库
re:
正则匹配,比较麻烦,效率较低,
beautifulsoup(容错能力强):
遍历文档树:
通过标签名字即可,特点速度快,但是如果存在多个相同的标签则只返回第一个
搜索文档树(五种过滤器):
1.字符串:
即标签名
2.正则表达式:
re.compile
3.列表:
任一与列表相同的元素,返回
4.True:
匹配任何值,但是不会返回字符串节点
5.自定义方法:
方法只接受一个元素参数,如果返回True,表示找到,如果是False,就没找到
修改文档树:
略:爬虫主要是爬取数据,并不是要做什么,所以用的不多
四.存储库:
Mongodb:
需要注意的就是_id默认是object对象,每个文档都有唯一的_id,ObjectId采用12字节的存储空间,是一个由24个十六进制数字组成的字符串
redis:
NoSQL数据库,减少数据库压力,数据挂掉仍能继续保持业务正常运行一段时间。
mysql:
现在尽量使用非关系型数据库,随着业务的扩展,扩展方便,不用做数据库迁移
五.高性能:
协程:
gevent
gevent+requests=grequests
twisted
tornado

浙公网安备 33010602011771号