⽹页数据的获取----相关的Python库
⽬录
⽹页数据获取的相关库
request库
beautifulsoup4库
正⽂
⽹页数据获取的相关库
Python语⾔提供了许多与URL和⽹页处理相关的库,使得Python⾮常适合⽹页链接和⽹页处理。常⽤的与URL和⽹页处理相关的库有requests、beautifulsoup4库。
requests库能够获取⽹页的源代码,即⽹页的html⽂档。
beautifulsoup4库,也称beautifulSoup库或bs4库,也是python语⾔获取⽹络数据常⽤的第三⽅库,是解析,遍历html⽂档标签的功能库,通过解析html⽂档为⽤户提供需要获取的数据。
安装:
pip install requests
pip install beautifulsoup4
学习参考⽹址
Python爬⾍利器⼆之Beautiful Soup的⽤法https:/ /wwwblogs/BigFishFly/p/6380014.html Python第三⽅库requests详解www.zhidaow/post/python-requests-install-and-brief-introduction requests库
⽹页请求函数() 构造⼀个请求服务器的request对象,是获取⽹页内容最常⽤的⽅法,其语法为:
(url,params=None, ** kwargs)
其中url表⽰拟获取⽹页的url链接,url链接必须采⽤HTTP或HTTPS⽅式访问;params表⽰url中的额外参数,字典或字节流格式,可选;** kwargs表⽰12个控制访问的参数均为可选,常使⽤的有参数timeout、headers、cookies。在调⽤()函数后,返回的⽹页内容会保存为⼀个Response对象r。
Response对象r包含服务器返回的所有返回信息,也包含请求的Request信息,其常⽤属性如表所⽰
⽅法名使⽤⽅法数据类型说明status_code r.status_code int请求的返回状态 str url对应的页⾯内容
headers r.headers dict url对应的头信息
t bytes url对应的页⾯内容的⼆进制形式
ding url对应的页⾯的编码⽅式apparent_encoding r.apparent_encoding从内容中分析出的编码⽅式
【例】使⽤requests库获取⼤学计算机⽹页案例⽹页源代码。
【代码如下】
("112.25.158.3:8000/%E5%A4%A7%E5%AD%A6%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E9%A1%B5%E6%A1%88% E4%BE%8B.html")#获取⽹页源代码赋值给对象r
[90:])#输出90往后的页⾯内容
【运⾏结果】
将获取⽹页内容的程序封装为函数,获取⽹页内容的⼀般通⽤框架可以概括为:
def getHTMLText(url):python代码转换
try:
(url)
r.raise_for_status()
expect:
r="fail"
return r
if __name__=="__main__":#程序的开始
url=input("请输⼊⽹址:")
#调⽤函数getHTMLText()获取页⾯内容赋值text
text=getHTMLText(url)
print(text)
beautifulsoup4库
使⽤HTML⽂档建⽴的⽹页页⾯⼀般⾮常复杂,除了有⽤的内容信息外,还包括⼤量⽤于页⾯格式的元素,直接解析⼀个⽹页需要深⼊了解HTML语法,⽐较复杂。 beautifulsoup4库将⽹页页⾯格式解析部分封装成函数,提供了若⼲处理函数获取⽹页信息。
beautifulsoup4库在使⽤之前,需要进⾏引⽤,由于这个库的名字⾮常特殊且采⽤⾯向对象⽅式组织,可以⽤from…import⽅式从库中直接引⽤beautifulSoup类,使⽤⽅法如下:
from bs4 import BeautifulSoup
soup=BeautifulSoup("< html>A Html Text< /html>",解析器)
构建⼀个beautifulSoup对象需要两个参数,第⼀个参数是将要解析的HTML⽂本字符串,第⼆个参数告诉beautifulSoup使⽤哪个解析器来解析HTML,解析器负责把HTML解析成相关的对象,"html.parser"是Python内置的解析器。
BeautifulSoup4将html的源代码转换成⼀个复杂的树状结构,html的源代码⾥的每⼀个标签都是Beautifu
lSoup对象,如 < head>、< title>、< body>等。html的源代码中的主要结构变成了BeautifulSoup对象的⼀个个属性,如表所⽰,BeautifulSoup对象的常⽤属性,每个属性均为HTML页⾯⾥标签元素。
属性描述
head HTML页⾯的< head>内容
title HTML页⾯标题,由< title>标记
body HTML页⾯的< body>内容
p HTML页⾯的第⼀个< p>内容
strings HTML页⾯所有呈现在Web上的字符串
stripped_strings HTML页⾯所有呈现在Web上的⾮空格字符串
BeautifulSoup4对HTML进⾏解析,获取⽹页中数据时,通常对不同标签的属性值进⾏查,BeautifulSoup中内置了⼀些查函数,常⽤的是find_all()和find()函数。find_all()函数的定义如下:
find_all(tag,attributes,recursive,text,limit,keywords)
其中tag代表标签参数,text表⽰⽂本参数,attributes代表标签的属性参数,recursive表⽰递归参数,limit代表限制参
数,keywords代表关键词参数,⽤于筛选标签的属性。
返回⼀个列表类型,存储查的结果
from bs4 import BeautifulSoup #引⼊beautifulsoup4库
import requests #引⼊requests库
def getHTMLText(url):#获取⽹页页⾯内容函数,获取成功返回页⾯内容,获取失败,返回"fail"
try:
(url)
r.raise_for_status()
except:
r="fail"
return r
def find1(soup):
h=soup.find_all({"h1","h2"})
print("输出⽹页中的标题:")
for hh in h:
print(hh)
print("---------------------------------")
if __name__=="__main__":#程序的开始
url="112.25.158.3:8000/%E5%A4%A7%E5%AD%A6%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E9%A1%B5%E6%A1%88%E4%BE% 8B.html"#获取⽹页⽹址
text=getHTMLText(url)
soup=BeautifulSoup(text,'html.parser')#这⾥出了⼀个⼩插曲,已解决,如果遇到类似问题,可以借鉴⼀下这篇博客,链接blog.csdn/matlab001/arti cle/details/83856642
find1(soup)#调⽤函数find1
知识点整理不易,如果能够帮助到你,还请给个免费的赞⽀持⼀下哦! 感谢阅读!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论