Python:requests库、BeautifulSoup4库的基本使⽤(实现简单的⽹
络爬⾍)
Python:requests库、BeautifulSoup4库的基本使⽤(实现简单的⽹络
爬⾍)
⼀、requests库的基本使⽤
requests是python语⾔编写的简单易⽤的HTTP库,使⽤起来⽐urllib更加简洁⽅便。
requests是第三⽅库,使⽤前需要通过pip安装。
pip install requests
1.基本⽤法:
import requests
#以百度⾸页为例
response = ('www.baidu')
#response对象的属性
print(response.status_code) # 打印状态码
print(response.url) # 打印请求url
print(response.headers) # 打印头信息
kies) # 打印cookie信息
) #以⽂本形式打印⽹页源码
t) #以字节流形式打印
运⾏后显⽰:
状态码:200
url:www.baidu
#输出headers信息、cookie信息以及⽹页源码信息
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu/>]>
import requests
<('/get')
requests.post('/post')
requests.put('/put')
requests.delete('/delete')
requests.head('/get')
requests.options('/get')
json():能够在HTTP响应内容中解析存在的JSON数据,⽅便解析HTTP的操作。
raise_for_status():只要返回的请求状态status_code不是200,则产⽣异常。⽤于try-except语句。
requests会产⽣⼏种常⽤异常:
ConnectionError异常:⽹络异常,如DNS查询失败、拒绝连接等。
HTTPError异常:⽆效HTTP响应。
Timeout异常:请求URL超时。
TooManyRedirects异常:请求超过了设定的最⼤重定向次数。
获取⼀个⽹页的内容的函数建议使⽤如下代码:
def getHTMLText(url):
try:
(url,timeout=30)
r.raise_for_status()#如果状态不是200,抛出异常
except:
return''
⼆、beautifulsoup4库的基本使⽤
beautifulsoup4库⽤于解析和处理HTML和XML。其最⼤优点是能根据HTML和XML语法建⽴解析树,提取有⽤信息。
beautifulsoup4也是第三⽅库,使⽤前同样需要通过pip安装。
pip install beautifulsoup4
注意:beautifulsoup4库和beautifulsoup库不能混为⼀谈,后者由于年久失修,已经不再维护了。
在使⽤beautifulsoup4库之前需要进⾏引⽤:
from bs4 import BeautifulSoup
使⽤BeautifulSoup()创建⼀个BeautifulSoup对象。
import requests
from bs4 import BeautifulSoup
('www.baidu')
soup=,'html.parser')
print(type(soup))
BeautifulSoup对象是⼀个树形结构,包含HTML页⾯中每⼀个Tag标签,这些标签构成BeautifulSoup对象的属性。BeautifulSoup对象常⽤属性如下:soup.head:HTML页⾯的<head>内容
soup.title:HTML页⾯的标题内容,在<head>之中
soup.body:HTML页⾯的<body>内容
soup.p:HTML页⾯第⼀个<p>内容
soup.strings:HTML页⾯所有呈现在web上的字符串内容
soup.stripped_strings:HTML页⾯所有呈现在web上的⾮空格字符串内容
#输出百度⾸页title标签的内容
import requests
from bs4 import BeautifulSoup
('www.baidu')
soup=,'html.parser')
print(soup.title)
beautifulsoup4库中每⼀个Tag标签称为⼀个Tag对象,标签对象的常⽤属性如下:name:标签本⾝的名称,是⼀个字符串,如a。
attrs:字典,包含了标签的全部属性。
contents:列表,包含当前标签下所有⼦标签的内容。
string:字符串,标签所包围的⽂本,⽹页中真实的⽂字。
import requests
from bs4 import BeautifulSoup
('www.baidu')
python网络爬虫书籍推荐soup=,'html.parser')
print(soup.a)
print(soup.a.name)
print(soup.a.attrs)
print(soup.a.string)
print(ts)
如果需要遍历整个HTML页⾯列出标签对应的所有内容,可以⽤到find_all()⽅法。BeautifulSoup.find_all( name , attrs , recursive , string , limit )
根据参数对应标签,返回类型为列表。参数如下:
name:根据标签名查。
attrs:根据标签属性值查,需要列出属性名和值,⽤JSON表⽰。recursive:设置查层次,只查当前标签下⼀层时使⽤recursive=False。string:根据关键字查string属性内容,采⽤string=开始。
limit:返回结果个数,默认返回全部结果。
import requests
from bs4 import BeautifulSoup
#爬取前程⽆忧⽹软件⼯程师薪资
('m.51job/search/joblist.php?jobarea=180400,180200&keyword=%E8%BD%
AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88&partner=webmeta') r.encoding='utf-8'
soup=,'html.parser')
allsalary=soup.find_all('em')
for i in allsalary:
if )==0:
continue
)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论