Python爬虫技术性总结(1)

  • A+
所属分类:python网络爬虫

1.如何分析一个网页

1):查看网页源代码中是否有我们需要的数据

2):如果 1)中没有,抓包,分析所有的包,看看哪个包中有我们需要的数据

3):如果 1),2)中都没有,可以使用selenium配合phantomjs解析

2.抓取工具:

1):urllib2

2):requests

3):scrapy

以上三个类库或框架用于抓取数据,拿到的都是网页源代码

3.解析网页源代码

1)正则表达式

2)xpath

3)bs4

用来根据网页源代码提取我们需要的数据

4.入库

mysql、mongodb

mysql里面存储过程、事务

只要涉及到并发,不能再使用id自增的方式,应该使用UUID,一般在表中配备一个日期类型的字段

5.应对反爬机制

1)headers的使用

2)代理IP,休眠

3)ocr验证码,如果说我们不涉及登录验证码,而且是爬取的过程中出现的验证码不能被ocr识别的时候,我们最终的解决方案是 2)

如果说我们需要破解登录的验证码,

a.人工打码

b.提供前端html页面,由用户输入

c.机器训练

4)简单ocr破解之后,拿到cookie,然后携带cookie再去访问当前页面,意味我们从浏览器数据验证码以后得到的那个页面

6.cookie的使用

1)模拟用户登录,登录成功后,拿到cookie,然后携带cookie请求类似于个人主页,信息修改的页面,模拟真实浏览器的实际操作

2)应对ocr之后的cookie,模拟浏览器请求

7.分布式

1)只要涉及到高并发,通常使用分布式的解决思路,来解决问题

requests celery+rabbitmq 多进程+协程的方式来构建分布式,这个思想完全可以应用在web当中,来构建webapi

url去重时:mysql、mongodb物理表去重,redis,list

redis去重的有点:速度快,减少的是由硬盘到内存的IO操作时间,缺点在于,如果没有存入硬盘,当服务器重启的时候,所有的url将消失

2)scrapy构建分布式的时候,我们采用了scrapy-redis的理念,将所有的url存放于redis中,做url去重,也可以采用mysql、mongodb等方式用于url去重操作

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: