zoukankan      html  css  js  c++  java
  • 爬虫的requests库和BeautifulSoup4的学习

    下面先来介绍两个库的基本使用

    1、Requests库

    方法  说明
    requests.request()  构造一个请求,支撑一下各方法的基础方法
    requests.get()  获取HTML网页的主要方法,对应于HTTP的GET
    requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
    requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
    requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
    requests.patch()  向HTML网页提交局部修改请求,对应于HTTP的PATCH
    requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE
    其对象属性 说明
    r.states_code 获取返回的状态码
    r.text / r.read() HTTP响应内容文本形式返回
    r.content HTTP响应内容的二进制形式
    r.json() HTTP响应内容的json形式
    r.raw HTTP响应内容的原始形式
    r.encoding   返回请求的url
    r.encoding 从HTTP header中猜测的响应内容编码方式
    r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
    r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)

     下面我们通过一个例子来介绍其中部分函数的功能

    用get()函数访问一个网站20次,打印返回状态,text()内容,计算text()属性和content()属性所返回的网页内容长度。

     下面来看看例子

    1 import requests
    2 r=requests.get("https://cn.bing.com/?FORM=Z9FD1")    #得到网页内容
    3 r.encoding="UTF-8"                                   #把展示的内容为UTF-8
    4 for i in range(20):
    5     print(r.status_code)
    6 print(r.text)
    7 print(len(r.content))
    8 print(len(r.text))

    再来看看效果

    上面的text内容由于太长只显示了这样。

     2、BeautifulSoup4库

    Beautiful Soup在解析时实际上是依赖解析器的,它除了支持python标准库中的HTML解析器外还支持第三方解析器如lxml

    Beautiful Soup支持的解析器,以及它们的优缺点:

    解析器使用方法优势劣势
    Python标准库 BeautifulSoup(markup,"html.parser")
    • Python的内置标准库
    • 执行速度适中
    • 文档容错能力强
    • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
    lxml HTML 解析器 BeautifulSoup(markup,"lxml")
    • 速度快
    • 文档容错能力强
    • 需要安装C语言库
    lxml XML 解析器

    BeautifulSoup(markup,["lxml", "xml"])

    BeautifulSoup(markup,"xml")

    • 速度快
    • 唯一支持XML的解析器
    • 需要安装C语言库
    html5lib BeautifulSoup(markup,"html5lib")
    • 最好的容错性
    • 以浏览器的方式解析文档
    • 生成HTML5格式的文档
    • 速度慢
    • 不依赖外部扩展

    下面再来看一个例子

     1 import re
     2 import requests
     3 from bs4 import BeautifulSoup
     4 a='<!DOCTYPE html>
     5  <html>
     6  <head>
     7  <meta charset="utf-8">
     8  <title>菜鸟教程(runoob.com)</title>
     9  </head>
    10  <body>
    11      <h1>我的第一个标题</h1>
    12      <p id="first">我的第一个段落。</p>
    13  </body>
    14      <table border="r">
    15  <tr>
    16      <td>row1,cell 1</td>
    17      <td>row2,cell 2</td>
    18  </tr>
    19  </table>
    20  </html>'
    21 m=re.findall('[u4e00-u9fa5]+',a)   #提取中文字符
    22 s=BeautifulSoup(a)
    23 print('autor:Yong No:10')
    24 print(s.head)
    25 print(s.body)
    26 print(s.p)
    27 print(m)

    再来看看效果:

    以上就是这两个库的一些介绍啦。

  • 相关阅读:
    16 Errors and Exceptions
    13 Asynchronous Programming
    wpf入门
    iframe cross domain
    ini_set("error_log",$error_path)设置
    MySQL中merge表存储引擎用法
    php中静态属性静态方法的用法
    PHP的SESSIONID生成原理
    composer的基本 使用
    相邻省份数组
  • 原文地址:https://www.cnblogs.com/liyanyinng/p/10894466.html
Copyright © 2011-2022 走看看