趣百科

Beautiful Soup解析网页,Beautiful Soup的使用

编辑:Simone 2024-10-13 10:10:22 575 阅读

Beautiful Soup解析网页,Beautiful Soup的使用

数据只能作为网页的一部分进行访问。没有接口给我提供数据,在这种情况下,就需要使用一种称为网络抓取的技术,将网页中的数据提取转换为我们需要的数据格式或者内容。

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,灵活又方便的网页解析库,处理高效,支持多种解析器

首先什么是网页,网页组建

当我们访问网页时,我们的Web浏览器向Web服务器发出请求。然后,服务器发回文件,告诉浏览器如何为我们呈现页面。这些文件分为几种主要类型:

HTML - 包含页面的主要内容。

CSS - 添加样式以使页面看起来更好。

JS - Javascript文件为网页添加交互性。

图像 - 图像格式(如JPG和PNG)允许网页显示图片。

以上这些都是构成网页的组建,如下打开beautiful soup安装库地址,这就是一个网页

安装

pip installbeautifulsoup4

pip install urllib2(没有装的话要安装)

打开cmd,然后输入命令进行安装

使用

先读取我们要提取信息的页面使用python的 urllib2

from bs4import BeautifulSoup

import urllib2

html=urllib2.urlopen("http://127.0.0.1:8000/ceshi.html").read().decode('utf-8')

print(html)

或者

importrequests

from bs4import BeautifulSoup

page =requests.get(“http://127.0.0.1:8000/ceshi.html”) //page is response 对象

soup =BeautifulSoup(page.content, 'html.parser')

这两种方式都能取得html内容

我这里的话就简单爬取http://127.0.0.1:8000/ceshi.html 本地的一个页面代码如下图所示

这样就可以把页面中的信息取出

from bs4 import BeautifulSoupfrom urllib2 import urlopenhtml = urlopen("http://127.0.0.1:8000/ceshi.html").read().decode('utf-8')soup=BeautifulSoup(html,features='lxml')print(soup.h1) #输出标题all_href = soup.find_all('img')all_href = [l['src'] for l in all_href]print( all_href) #输出该页面中的img链接

Beautifulsoup通过css解析网页,我们在页面中给p标签加个样式类fontred,然后使用如下代码就可以实现p标签的内容读出来

from bs4 import BeautifulSoupfrom urllib2 import urlopenhtml = urlopen("http://127.0.0.1:8000/ceshi.html").read().decode('utf-8')soup=BeautifulSoup(html,features='lxml')print(soup.h1)soup = BeautifulSoup(html, features='lxml')month = soup.find_all('p', {"class": "fontred"})for m in month: print(m.get_text()) #输出p标签的内容

接着上面的 ,我们加入代码

soup1 = soup.find('ul', {"class": 'fontgreen'})soup2 = soup1.find_all('li')for d in soup2: print(d.get_text())

这样就可以实现将class为fontgreen的url下面的li标签文本类容输出

beautifulsoup另一个好用的功能正则表达式匹配

import reimg_links = soup.find_all("img", {"src": re.compile('.*?\.png')})for link in img_links: print(link['src'])

通过匹配就可以把图片地址输出

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/21583.html

相关推荐