爬虫——北理工mooc笔记

requests库

  • requests.get(url,params,**)方法
    • 参数:url,本地服务器的参数
    • 返回值:是一个response对象,内容为html文档的内容
    • response对象r的属性:
      • r.status_code :HTTP请求的返回状态
      • r.text:相应内容的字符串形式:url的页面内容
      • r.encoding :从http header中猜测编码方式
        • 当header中不存在charset 时认为编码方式为 ISO-8859-1
        • 可能会出现乱码,可以改变r.encoding=(r.apparent_encoding的编码方式),解决乱码问题
      • r.apparent_encoding:从http 的响应内容中分析编码方式(备选编码方式)
      • r.content:http响应内容的二进制形式(还原响应中的二进制)

通用代码框架

  • requests库的异常类型:

    • requests.ConnectionsError:网络连接错误异常
    • requests.HTTPError:HTTP错误异常
    • requests.URLRequired:URL缺陷失异常
    • requests.TooManyRedirects:超过最大重定向次数
    • requests.ConnectTimeout:连接远程服务器异常
    • requests.Timeout:请求URL超时
  • 通过response对象r查看异常原因

    • r.raise_for_status()判断返回值是否为200
  •   import requests
      def getHTMLText(url):
          try:
              r = requests.get(url,timeout = 30)
              #检验是否发生异常,若发生异常直接执行except的异常处理
              r.raise_for_status()
              #防止出现乱码
              r.encoding = r.apparent_encoding
              return r.text
          except:
              return "异常"
          
    

HTTP协议与requests库的方法

  • HTTP URL的理解——URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

  • HTTP协议对资源的操作:

    • GET:获取URL位置的资源
    • HEAD:请求资源的头信息(位置资源的响应报告消息)
    • POST :请求向URL位置的资源后增加新的数据
    • PUT :请求向URL位置存储一个资源覆盖原来的资源
    • PATCH :请求局部更新URL位置的资源(修改该处资源的部分内容)
    • DELETE :请求删除URL位置的资源
    • 这也是requsts库提供的方法,每一个操作都是独立的
  • requests库对应的方法

    • requests.get
    • requests.head
    • requests.post
    • requests.put
    • requests.patch
    • requests.deletd
    • requests库的根源方法:request
    • requests.request(method,url,******kwargs)
      • **kwargs是控制访问的参数,为可选项。param:字典或字节序列作为参数加到url(把键值对加到url)
      • data : 字典、字节序列或文件对象作为request的内容(不存在url中,而是把键值对存在url对应的资源里)
      • json : json格式的数据作为Request的内容
      • headers: 字典,HTTP定制头(模拟浏览器发送请求)、
      • auth : 元组,支持http认证功能
      • files : 字典,向服务器传输文件使用
      • timeout : 设定的超时时间,sec为单位
      • proxies : 字典类型,设定访问代理服务器,可以增加登录认证(隐藏真实的服务器)
      • allow_redirects : True/False 重定向开关,默认为true
      • stream : 对获取内容是否立即下载,默认为true
      • verify : 认证ssl证书,默认为true
      • cert: 本地sll证书路径
      • 别的方法,是request的封装,参数不太一样(显式参数)

爬虫的问题

  • 爬取网页 小规模 数据量小,对爬取速度不敏感 requests库

    爬取网站 中规模 数据量较大,对爬取速度敏感 Scrapy库

    爬取全网 大规模 做搜索引擎 定制开发

  • 爬虫对网站服务器性能造成了骚扰,开销变大

  • 爬虫有法律风险,知识产权

  • 爬虫有隐私泄露的风险

  • 应对:robots协议;审查来源 Agent-header

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容