- A+
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的方式使用