金沙澳门官网:[python爬虫]Requests-BeautifulSoup-Re库

作者: 网络编程  发布:2019-10-19

 

 

 


⑥requests.patch(url,data=None,**kwargs)

与安装小测比较

 1 import requests  #引入Requests库
 2 
 3 def getHTMLText(url):
 4     try:
 5         r=requests.get(url)
 6         r.raise_for_status()  #如果状态不是200,则产生HTTPError异常
 7         r.encoding=r.apparent_encoding
 8         return r.text
 9     except:
10         return "产生错误"
11 
12 def main():
13     url="http://www.baidu.com"
14     print(getHTMLText(url))
15 
16 
17 if __name__=="__main__":
18     main()

NavigableString 标签内非属性字符串,<>…</>中字符串,格式:<tag>.string,NavigableString可以跨越多个层次

requests.request():构造一个请求,是支撑以上各种方法的基础方法

1 GET 请求获取URL位置的资源
2 HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
3 POST 请求向URL位置的资源后附加新的数据
4 PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
5 PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
6 DELETE 请求删除URL位置存储的资源          

requests.Timeout:连接至服务器及到获取内容整个过程中产生的超时异常

上行遍历

 


1.Requests库的安装

>>> r=requests.head("http://www.baidu.com")
>>> r.headers
{'Server': 'bfe/1.0.8.18', 'Date': 'Fri, 17 Nov 2017 02:51:22 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Mon, 13 Jun 2016 02:50:50 GMT', 'Connection': 'Keep-Alive', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Pragma': 'no-cache', 'Content-Encoding': 'gzip'}
>>> r.text
''

 

head

cert:保存本体SSL证书路径的相关设置

from bs4 import BeautifulSoup
import bs4

HTTP协议对资源的操作与Requests库提供的方法是相对应的。这些操作包括:

2.requests库的八个方法

python语言有两个版本同步更新:2.x系列和3.x系列。当前最新版本是2.7和3.7。2.x版本是之前的版本,各种库比较丰富。3.x版本是2009年开始开发的,相比较于2.x版本语法有很大的变化。两个版本是不兼容的。发展到现在,3.x系列已经有很多成熟的第三方库了,官方也在支持3.x系列版本的开发。除此之外,BeautifulSoup库对3.x版本也有优化。

3 requests库的两个重要对象:request和response(包含爬虫返回的内容)

④requests.post(url,data=None,json=None,**kwargs)

>>> import requests
>>> r=requests.get("http://www.baidu.com")
>>> print(r.status_code)
200
>>> type(r)
<class 'requests.models.Response'>
>>> r.headers
{'Server': 'bfe/1.0.8.18', 'Date': 'Fri, 17 Nov 2017 02:24:03 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Mon, 23 Jan 2017 13:28:28 GMT', 'Transfer-Encoding': 'chunked', 'Connection': 'Keep-Alive', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Pragma': 'no-cache', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Content-Encoding': 'gzip'}
>>>

 

*∙ url : 拟获取页面的url链接
∙ params : url中的额外参数,字典或字节流格式,可选
∙ **kwargs: 12个控制访问的参数 *

method是请求的方式,对应get、head、post、put、patch、delete、options这7种方法。其中options是指与服务器交互时产生的一些参数,和URL的位置资源不直接相关。method参数的含义,以get()方法举例。r=requests.request('get',url),r=requests.request('GET',url),r=requests.get(url)。这3种方法是等价的。注意requests.request()中get是字符串,要加引号。

patch与put

requests.head():获取HTML网页的头信息,对应HTTP的HEAD

*返回一个包含服务器**资源的Response对象 ***

页面中显示的字符都是有一定要求的。有些页面会在HTTP头部中写入charset字段,来标识该页面中文本字符串的编码方式,但是有些页面的头部中没有charset字段。r.encoding的作用就是查看HTTP头部,以返回charset字段的值;如果没有charset字段,则返回的编码方式是'iso-8859-1'。r.apparent_encoding是实实在在地解析页面的内容,分析其中的字符串的最适合的编码方式,并返回这个编码。所以一般情况下,r.apparent_encoding比r.encoding更合理。一般用get()方法成功获取HTTP相关内容后,将r.apparent_encoding的值赋给r.encoding(即r.encoding=r.apparent_encoding),来根据正确的编码方式显示字符。

r.raise_for_status() 如果不是200,产生异常 requests.HTTPError

⑤requests.put(url,data=None,**kwargs)

HTTP URL实例:


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

这些方法是:

Attributes 标签的属性,字典形式组织,格式:<tag>.attrs,一个<tag>可以有0或多个属性,字典类型

右键计算机属性-高级系统设置-环境变量。在用户变量列表中,找到Path变量,点击编辑。新建两个变量,目录是python安装目录下python.exe和pip.exe所在位置。

4 Response对象的属性

r.text:HTTP响应内容的字符串形式,即URL对应的页面内容

构造一个向服务器请求**资源的Request对象**

 

1 异常 说明
2 requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
3 requests.HTTPError          HTTP错误异常
4 requests.URLRequired           URL缺失异常
5 requests.TooManyRedirects     超过最大重定向次数,产生重定向异常
6 requests.ConnectTimeout         连接远程服务器超时异常
7 requests.Timeout             请求URL超时,产生超时异常

爬虫是指根据一定规则(如页面HTML结构)可以在网络页面上获取大量数据的代码或程序。python语言提供了很多适合编写爬虫的库。

5. requests异常

requests.get():获取HTML网页的主要方法,对应HTTP的GET

Robots Exclusion Standard**,网络爬虫排除标准**
作用:
网站告知网络爬虫哪些页面可以抓取,哪些不行
形式:
在网站根目录下的robots.txt文件 

使用Requests、BeautifulSoup、Re库搭建python爬虫的思路是:Requests库获取页面内容,BeautifulSoup库解析页面内容,Re库辅助匹配字符串。这3个库都比较简洁,语法也不是很复杂,适合构建中小型的爬虫。

 1 **kwargs: 控制访问的参数,均为可选项
 2 params : 字典或字节序列,作为参数增加到url中
 3 data : 字典、字节序列或文件对象,作为Request的内容
 4 json : JSON格式的数据,作为Request的内容
 5 headers : 字典,HTTP定制头
 6 cookies : 字典或CookieJar,Request中的cookie
 7 auth : 元组,支持HTTP认证功能
 8  files : 字典类型,传输文件
 9 timeout : 设定超时时间,秒为单位
10 proxies : 字典类型,设定访问代理服务器,可以增加登录认证
11 allow_redirects : True/False,默认为True,重定向开关
12 stream : True/False,默认为True,获取内容立即下载开关
13 verify : True/False,默认为True,认证SSL证书开关
14 cert : 本地SSL证书路径            

requests.patch():向HTML网页提交局部修改请求,对应HTTP的PATCH

requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POS
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE
requests.options(url, **kwargs)

cookies:字典或CookieJar,Request中的cookie

Tag 标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾,任何存在于HTML语法中的标签都可以用soup.<tag>访问获得,当HTML文档中存在多个相同<tag>对应内容时,soup.<tag>返回第一个 **

kwargs是可选参数,这里有13个。分别是:


从图中可以看到,get()方法实际上返回的是一个request()方法构造的对象,即get()方法是request()方法的封装。不光是get()方法,Requests库提供的其他几个方法也都是request()方法的封装。从这个层面上理解,Requests库只有request()这样一个基础的方法。

bs4库的prettify()方法
.prettify()为HTML文本<>及其内容增加更加'n'
.prettify()可用于标签,方法:<tag>.prettify()

requests.post():向HTML网页提交POST请求,对应HTTP的POST

.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

 

解析器         使用方法             条件
bs4的HTML解析器     BeautifulSoup(mk,'html.parser')   安装bs4库
lxml的HTML解析器   BeautifulSoup(mk,'lxml')   pip install lxml
lxml的XML解析器   BeautifulSoup(mk,'xml')   pip install lxml
html5lib的解析器   BeautifulSoup(mk,'html5lib')   pip install html5lib

②关于get()方法的定义

Response对象包含服务器返回的所有信息,也包含请求的Request信息

下面输出Response对象的相关属性信息,并展示错误的编码方式:

pip install requests

 

r.apparent_encoding:根据网页内容分析出的编码方式,可以看作是r.encoding的备选

r.content:HTTP响应内容的二进制形式。如在HTTP中获取的图片、视频等多媒体资源就是用二进制形式存储的

.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点

【根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写  文章中部分图片来自老师PPT

<>.find_all(name, attrs, recursive, string, **kwargs)
∙ name : 对标签名称的检索字符串
∙ attrs: 对标签属性值的检索字符串,可标注属性检索
∙ recursive: 是否对子孙全部检索,默认True
∙ string: <>…</>中字符串区域的检索字符串
<tag>(..) 等价于 <tag>.find_all(..)
soup(..) 等价于 soup.find_all(..) 

<>.find() 搜索且只返回一个结果,同.find_all()参数
<>.find_parents() 在先辈节点中搜索,返回列表类型,同.find_all()参数
<>.find_parent() 在先辈节点中返回一个结果,同.find()参数
<>.find_next_siblings() 在后续平行节点中搜索,返回列表类型,同.find_all()参数
<>.find_next_sibling() 在后续平行节点中返回一个结果,同.find()参数
<>.find_previous_siblings() 在前序平行节点中搜索,返回列表类型,同.find_all()参数
<>.find_previous_sibling() 在前序平行节点中返回一个结果,同.find()参数

Requests库的基础方法,其他方法(如get()方法)都是这个方法的封装。

安装:pip install beautifulsoup4 

 

r.status_code HTTP      请求的返回状态,200表示连接成功,404表示失败
r.text HTTP                  响应内容的字符串形式,即,url对应的页面内容
r.encoding                   从HTTP header中猜测的响应内容编码方式
apparent_encoding     从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP           响应内容的二进制形式

金沙澳门官网 1

fiand_all()方法

r.encoding:HTTP头部中猜测的内容字符编码方式

 

下载并安装python后,需要配置计算机环境变量,为了在使用CMD命令窗口时可以正确找到所需工具的位置。(pip工具)

Beautiful Soup库解析器 

以管理员身份启动CMD(右键CMD即可,这里不确定直接运行CMD是否可以安装成功),输入pip install requests即可从网络上下载并安装requests库。pip是python库的管理工具,可以对大部分库进行下载、安装、更新、卸载等。但是也有部分库是使用pip工具安装不了的。如果提示要先更新pip工具,按照指导更新即可。

Beautiful Soup库,也叫beautifulsoup4 或 bs4
约定引用方式如下,即主要是用BeautifulSoup类

url是拟获取资源的链接。

Requests is an elegant and simple HTTP library for Python, built for human beings.

 

Comment 标签内字符串的注释部分,一种特殊的Comment类型,Comment是一种特殊类型

Requests库提供了方法获取HTML页面,相当于把网页抓取到了一个变量中,再使用这个变量进行后续处理。更多信息请查看官方文档:。

一:Requests库

HTTP协议通过URL对资源作定位,通过这6个方法对资源进行管理。

Name 标签的名字,<p>…</p>的名字是'p',格式:<tag>.name,*每个<tag>都有自己的名字,通过<tag>.name获取,字符串类型 ***

5.关于HTTP协议

response = requests.get(url) 

①requests.request(method,url,**kwargs)

6.response异常

2.Requests库的7个主要方法

约束性:**Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险 **

headers:字典,用于定制访问服务器的信息头,可将程序爬取行为模拟成浏览器的访问行为

网络爬虫:自动或人工识别robots.txt,再进行内容爬取**

当发生异常时,Response对象的status_code属性不是200。根据这一点,Requests库提供了r.raise_for_status()方法。如果status_code不是200,则引发HTTPError异常。可以根据这一点使用python语言的try-except异常捕捉机制,编写连接至服务器并获取页面内容的通用代码框架。

.contents 子节点的列表,将<tag>所有儿子节点存入列表
.children 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

慕课链接:】

r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1   r.text根据r.encoding显示网页内容

金沙澳门官网 2

平行遍历

requests.TooManyRedirects:用户访问URL进行的重定向次数超过了Requests库要求的最大重定向次数产生的异常,如对复杂URL进行访问时引发


打开CMD(command,命令提示符),输入python以测试环境变量是否配置成功。若输出python版本信息,则说明配置成功。

r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)

r=requests.get(url)这样一行代码是和指定的服务器进行连接,但是在这个过程中可能会产生很多异常。

假设URL位置有一组数据UserInfo,包括UserID、 UserName等20个字段
需求:用户修改了UserName,其他不变
• 采用PATCH,仅向URL提交UserName的局部更新请求
• 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除
PATCH的最主要好处:节省网络带宽

金沙澳门官网 3

HTTP协议对资源的操作方法:

 

r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理 
7.HTTP**Hypertext Transfer Protocol,超文本传输协议**
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式如下:
]
host: 合法的Internet主机域名或IP地址
port: 端口号,缺省端口为80
path: 请求资源的路径

本文由金沙澳门官网发布于网络编程,转载请注明出处:金沙澳门官网:[python爬虫]Requests-BeautifulSoup-Re库

关键词: 金沙澳门官网

上一篇:金沙澳门官网第三方登录开发
下一篇:没有了