
点击上方蓝字关注"程序员Bob"呀~css

必定要爱着点什么,恰似草木对光阴的钟情。html
——汪曾祺python

上次小编谈到了对网页信息内容的爬取,那么在具体的编程体系中该如何实现呢?程序员
1.方法介绍web
<>.find_all(name,attrs,recursive,string,**kwargs)
2.相关参数介绍
编程
第一个参数是name:对HTML中标签名称的检索字符串。swift
好比咱们在http://python123.io/ws/demo.html这个简单的网页中找到与a和b标签相关的内容。微信
首先,打开网页右键找到检查,而后能够看到与a和b标签相关的内容:app
下一步,咱们决定用上面BeautifulSoup库提供的方法开始查找及其准备:框架
-
引用相关库。
-
用get方法构造一个请求,获取HTML网页。 -
将网页对应的内容储存到demo变量中,并对HTML网页进行解析。 -
随后便使用查找语句对标签的查找。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(demo)print(soup.find_all('a'))print(soup.find_all(['a','b']))
若是咱们要查找的网页是一个较大的网站,所涉及的标签内容不少,那么该如何查找呢?
To:加个for循环,便可打印出全部的标签信息。
相关代码以下:
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")for tag in soup.find_all(True): print(tag.name)
第二个参数是attrs:对标签属性值的检索字符串,可标注属性检索。
查找p标签包含course的属性值。
查找id=link1的属性值。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.find_all('p','course'))#查找p标签包含course的属性值print(soup.find_all(id='link1'))#查找id=link1的属性值
第三个参数:recursive:是否对子孙标签所有检索,默认True。
1.对a标签是否进行子孙标签所有检索。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup.find_all('a'))print(soup.find_all('a',recursive=False))#先后对比
第四个参数是string:<>...</>中字符串区域的检索字符串。
import requestsfrom bs4 import BeautifulSoupr=requests.get("http://python123.io/ws/demo.html")demo=r.textsoup=BeautifulSoup(demo,"html.parser")print(soup)print(soup.find_all(string="Basic Python"))#先后对比
3.与find_all相关的方法
<tag>(...) 等价于 <tag>.find_all(...)soup(...)等价于 soup.find_all(...)
<>.find():搜索且只返回一个结果,字符串类型。
<>.find_parents():在先辈节点中搜索,返回列表类型。
<>.find_parent():在先辈节点中返回一个结果,字符串类型。
<>.find_next_siblings():在后续平行节点中搜索,返回列表类型。
<>.find_next_silbling():在后续平行节点中返回一个结果,字符串类型。
<>.find_previous_siblings():在前序平行节点中搜索,返回列表类型。
<>.find_previous_sibling():在前序平行节点中返回一个结果,字符串类型。
为你,千千万万遍.
往期推荐:
2021-02-19

2021-02-08

2021-02-03


本文分享自微信公众号 - 程序员Bob(gh_8a1a1530d0bf)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。