BeautifulSoup解析HTML

 时间:2024-10-12 10:27:19

1、从网上获取数据:直接上代码,由于这里不讲爬虫相关的知识,所以就不细讲了。说明以下几点:1.url指向的为你想爬取的网页地址;2.translation_html为网页地址所对应的html代码,所对应的页面对下图;3. 要介绍的BeautifulSoup就是对第2点中translation_html的内容进行解析。---------------代码分割线---------------import urllib.request as rqurl = "https://www.baidu.com"req = rq.Request(url, headers={ 'Connection': 'Keep-Alive', 'Accept': 'text/html, application/xhtml+xml, */*', 'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' })translation_html = rq.urlopen(req).read().decode("utf-8")

BeautifulSoup解析HTML

2、安装并导入BeautifulSoup:可以通过pip命令直接安装:pip install beautifulsoup4如果还想解析html以外格式的一些文档,可以再安装其它的库,如:$ pip install lxml$ pip install html5lib安装好后,要在python(.py)文件中使用BeautifulSoup的各项功能前,还需要在.py文件中用以下语句把BeautifulSoup库进行导入。from bs4 importBeautifulSoup

BeautifulSoup解析HTML

3、我们已经从第一步获取了要解析的HTML代码,从第二步安装并导入了BeautifulSoup库,接下来就可以使用BeautifulSoup库所提供的功能,对HTML的内容进行解析了。为了方便说明,这里不讲原理性的东西,都是以举例的方式让大家看得明白。

BeautifulSoup解析HTML

4、先看一段代码:from bs4 importBeautifulSoup # 导入BeautifulSoup库soup = BeautifulSoup(translation_html, "html.parser") #translation_html为第一步得到的html代码,"html.parser"说明我们解析的内容为html格式的。为了使说明更简洁,translation_html所对应的HTML代码看成以下内容:<html><body> <div id='div1'> <p class='p1 first'>p1 content<!-- p1 comment --></p> <p class='p2 second'>p2 content</p> </div></body></html>接下来的说明就围绕这段代码来说明BeautifulSoup的解析过程。

BeautifulSoup解析HTML

5、soup = 返回BeautifulSoup对象:整个html代码(从<html>到</html>)soup(&qu泠贾高框ot;div") = 查找所有div元素,返回列表:第1个元素为(从<div id='div1'>到</div>)的代码soup.div =查找第一个div元素,返回BeautifulSoup对象:(从<div id='div1'>到</div>)soup("p") = 查找所有p元素,返回列表:第1个元素为"<p class='p1'>p1 content</p>",第二个元素为"<p class='p2'>p2 content</p>"。soup.div("p", recursive=False)= 查找div下直属p元素,返回列表:第1个元素为"<p class='p1'>p1 content</p>",第二个元素为"<p class='p2'>p2 content</p>"。soup.p =查找第一个p元素,返回BeautifulSoup对象(<p class='p1'>p1 content</p>)注意:上述返回列表中的每个元素也是BeautifulSoup对象。可以把返回的BeautifulSoup对象看成是一个原HTML上的子HTML。在这个子对象上的操作方法和最初的对象是一样的。

BeautifulSoup解析HTML

6、soup("p", attrs={"class": "p2"}) = 在soup("p")的基础上加了一个限定条件,可以把查找的范围更精确化。返回值也是一个列表。相当于soup.findAll(...)。属性值还可以接受正则表达式:如上述的"p2"可以被替换为s【s = re.compile(r'fir')】soup.find("p", attrs={"class": "p2"})= 返回上面列表中的第一元素。attrs参数的内容可以有多个,如id,class,name什么都可以加进入,以最大限度的精确查找。

BeautifulSoup解析HTML

7、soup.p['class'] = 返回第一个p元素的class属性列表(['p1', 'first'])soup.p.text= 返回第一个p元素的内容(p1 content),注意不包含注释的内容以上就是BeautifulSoup库的基本用法,相信通过大家的举一反三,应该能够完成你想要的功能了。

BeautifulSoup解析HTML
  • Unity如何新建空物体对象#校园分享#
  • 如何更改Windows7系统的任务栏位置?
  • 在Windows中有几种方法进行区域和语言设置呢?
  • 战网账号如何修改手机号码
  • Word2010中旋转图片的三种方法
  • 热门搜索
    创卫手抄报资料 美德少年手抄报资料 手抄报设计图案大全 感恩节的手抄报图片 关于语文的手抄报图片 勤俭节约手抄报大全 廉洁手抄报资料 有关于环保的手抄报 交通的手抄报 备战期中手抄报