Python爬虫技术性总结(2)

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

1. 爬虫理论,怎么样抓包,同步异步分析要抓取的数据,我们的爬虫都是定向爬虫

2. urllib2结合urllib作为入门了解内容,了解urllib2抓取数据的使用

3. requests重点,重点,重点,重复3遍,必须掌握requests的使用

headers:为了伪装浏览器,破解对方网站的反爬措施,针对直接拿不到数据的网站,首先考虑使用headers。

cookies:主要使用在破解登录算法,登录算法破解完成后,拿到cookies,然后根据拿到的cookies去访问个人主页等,需要登录后看到的数据。cookies是服务器写入浏览器本地的数据

params:拼接url的“?”后面的数据,每个 “&”都代表一个字典的键值

data:用于post方式传送数据时使用

timeout:类似于打开浏览器访问第三方网站的时间,限定时间内访问。

proxies:如果第三方网站启用了反爬措施,例如:出现验证码,此时我们可以使用代理IP,访问

4. 提取数据 重点,重点,重复3遍,只爬取不提取数据是没有意义的

正则表达式:提供最简单的 (.*?) 的使用,要和不要的数据都是用(.*?)提取

bs4:需要将文档转换成BeatfulSoup对象,需要lxml解析器进行解析

xpath:lxml解析器解析,父节点,子节点的方式进行查找

5. selenium的使用,对于某些网站,同步异步方式都拿不到数据的情况下,可以采用selenium,结合无图形界面的phantomjs浏览器使用

6. rabbitMQ:消息队列,先进先出,用于构建分布式的程序开发的中间件。celery分布式任务分发,有生产者有消费者,生产者根据消费者中定义的方法,将生产的数据,放入到rabbitmq中,消费者监控rabbitmq队列,当rabbitmq中存在数据时,开始工作,消费者的启动模式:celery -A ss worker ...,采用多进程+协程的方式。生产者通过 delay关键字将生产的消息存放到rabbitmq中。

7. scrapy,本身是一个带有并发异步性质的框架,整个框架围绕scrapy引擎开始,首先scrapy引擎向蜘蛛spiders发起请求,请求第一个要爬取的网址,然后scrapy引擎将拿到的url地址交给调度器,调度器同时返回给scrapy引擎要爬取的url地址,scrapy引擎将url地址交给下载器,下载器开始下载,下载完成后,将下载的数据返回给scrapy引擎,scrapy引擎,将数据交给蜘蛛,蜘蛛进行解析,如果有需要继续爬取的url地址,通过yield Request,交给scrapy引擎,重复以上操作,最后蜘蛛将要保存的数据,交给item piplines,进行入库操作

注意事项: items:定义要保存的数据字段 蜘蛛给items字段赋值 piplines:获取蜘蛛中赋的items值,进行入库处理。

常用的setting 中的配置:

DOWNLOAD_DELAY = 2 #请求同一个网站的时间间隔,time.sleep(2)

DOWNLOAD_TIMEOUT = 30 #requests中的timeout,访问对方网站的最大时间

CONCURRENT_REQUESTS_PER_IP = 1 #对单个IP进行并发请求的最大值

COOKIES_ENABLED = True #启用cookie

ITEM_PIPELINES = {#注册piplines

DEFAULT_REQUEST_HEADERS = {

}

USER_AGENT #user_agent伪装浏览器

8. scrapy-redis

scrapy本身的队列不能实现多个蜘蛛的分布式爬取,可以通过redis来实现

reids内存数据库,同样也是基于key/value值的存储方式

用python操作redis时,只需要掌握set和get两个方法即可,set方法中有三个参数:key,values,停留时间

get中只有一参数:key

9. ocr的使用,简单的验证码和电话号码等,可以用ocr识别,ocr识别图片中的字符,但是识别率不是很高,大家了解一下即可。对于爬虫中出现反爬操作的网站,我们可以通过代理IP的方式使用

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

发表评论

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