python爬虫系列X--小知识汇总

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 = '[email protected]'
password = 'yyy'
to_addr = '[email protected]'
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



你可能感兴趣的:(Python)