X系列不针对专门技术,只是一些辅助,内容零散添加。
1、为爬虫运行状态设置邮件提醒,使用python smtp、email模块完成。
from email.mime.text import MIMEText
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib
msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403','plain','utf-8')
def _format_addr(s):
name,addr = parseaddr(s)
return formataddr((Header(name,'utf-8').encode(), addr))
from_addr = 'zzz@126.com'
password = 'yyy'
to_addr = 'xxx@qq.com'
smtp_server = 'smtp.126.com'
msg['From'] = _format_addr('一号爬虫 <%s>' %from_addr)
msg['To'] = _format_addr('管理员 <%s>' %to_addr)
msg['Subject'] = Header('一号爬虫运行状态','utf-8').encode()
server = smtplib.SMTP(smtp_server,25)
server.login(from_addr, password)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()
2、基础爬虫框架的5个模块:调度器、URL管理器、HTML下载器、HTML解析器和数据存储器。
3、Scrapy使用LIFO队列来存储等待的请求。简单的说,就是深度优先顺序 。
4、Pillow 是用来生成缩略图,并将图片归一化为JPEG/RGB格式,因此为了使用图片管道,你需要安装这个库。
Scrapy提供了一个简单的性能测试工具。其创建了一个本地HTTP服务器,并以最大可能的速度进行爬取。 该测试性能工具目的是测试Scrapy在您的硬件上的效率,来获得一个基本的底线用于对比。 其使用了一个简单的spider,仅跟进链接,不做任何处理。 scrapy bench即可进行测试。
5、传统验证码是输入型验证码,可以是数字、字母和汉字,不涉及含义分析,识别相对简单。需安装pytesseract、Pillow、tesseract-ocr(https://digi.bib.uni-mannheim.de/tesseract/)。
人工打码采用自动识别+人工识别的组合方式,
滑动验证码。
6、aiohttp就是requests的异步替代版,专门适合asyncio框架,否则使用同步框架,发挥不出asyncio的真正威力。
asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。
asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。
7、PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪的方法了。
8、Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。
9、分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。
10、在windows上好用的http抓包工具就那么几款,网上大部分人都推荐的Fidder,我用过之后感觉Fidder和HTTP Analyzer都可以,两者都有一个共性问题,打开之后浏览器访问https网页有问题,因为证书的问题导致的,可以这么来用:浏览器访问网页的包就用浏览器自带的调试工具看即可,程序发出的包则用Fidder或HTTP Analyzer捕获即可。
11、反爬技巧
+ Headers,Referer域防盗链
+ 代理IP,延时访问
+ www>m>wap
+ 模拟浏览器访问
12、robots.txt一般在网站根目录下有此文件,www.xxx.com/robots.txt。
13、sitemap
1、网站自己提供sitemap
2、用第3方工具获取:https://sitemap.webkk.net
https://www.jianshu.com/p/c194cace09c1
3、搜索引擎上输入:site www.xxx.com可以得到百度收录的网页数
使用python builtwith模块识别网站构建技术,pip install builtwith;import builtwith ;builtwith.parse('http://www.zhihu.com')
使用python-whois查询网站所有者,pip install python-whois;import whois;whois.whois(url)
14、爬虫使用总结
网络请求:urllib.request、requests、selenium、phantomjs、chromedriver
网页分析:re、beautifulsoup、lxml、xpath、css选择器。正则表达式和lxml的性能差不多,采用xpath性能最佳,BeautifulSoup性能最差。
存储库:文件(txt、csv、xls),MySQL,Mongodb,Redis
数据清洗靠Pandas,文本处理靠Gensim,图片处理靠Pillow