4.爬虫相关

本章内容:

  • 爬虫基本原理
  • 请求库
  • 解析库
  • 存储库
  • 高性能

一.爬虫基本原理

  如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据。

  爬虫所需工具:

    请求库:requests,selenium

    解析库:正则,beautifulsoup,pyquery

    存储库:文件,MySQL,Mongodb,Redis

    框架:scrapy

二.请求库

  requests(可以只拿页面内容,轻量):

    使用requests可以模拟浏览器的请求,requests库发送请求将网页内容下载下来以后,并不会执行js代码,需要自己分析目标站点发起新的request请求

    我们要加上一些请求头Referer,User-Agent,

    requests.session()会自动帮我们保存cookie信息

    有时候页面内容为gb2312,而requests的默认编码为ISO-8859-1,如果不设置为gbk会中文乱码,

    我们使用爬虫的时候记得加上代理,不然同一个Ip访问过于频繁会有被封掉的风险,

  selenium(用于自动化测试,可以做复杂的验证):

    一般用隐式等待,

    在交互动作比较难以实现的时候可以自己写JS(万能)

三.解析库

  re:

    正则匹配,比较麻烦,效率较低,

  beautifulsoup(容错能力强):

    遍历文档树:

      通过标签名字即可,特点速度快,但是如果存在多个相同的标签则只返回第一个

    搜索文档树(五种过滤器):

      1.字符串:

        即标签名

      2.正则表达式:

        re.compile

      3.列表:

        任一与列表相同的元素,返回

      4.True:

        匹配任何值,但是不会返回字符串节点

      5.自定义方法:

        方法只接受一个元素参数,如果返回True,表示找到,如果是False,就没找到

    修改文档树:

      略:爬虫主要是爬取数据,并不是要做什么,所以用的不多

四.存储库:

  Mongodb:

    需要注意的就是_id默认是object对象,每个文档都有唯一的_id,ObjectId采用12字节的存储空间,是一个由24个十六进制数字组成的字符串

  redis:

    NoSQL数据库,减少数据库压力,数据挂掉仍能继续保持业务正常运行一段时间。

  mysql:

    现在尽量使用非关系型数据库,随着业务的扩展,扩展方便,不用做数据库迁移

五.高性能:

  协程:

    gevent

    gevent+requests=grequests

    twisted

    tornado

    

posted @ 2018-02-18 20:22  最咸的咸鱼  阅读(52)  评论(0)    收藏  举报