搜索指定网站内容(soup格式的页面信息获取网页中进一步获取我们需要的信息)
优采云 发布时间: 2021-10-03 13:29搜索指定网站内容(soup格式的页面信息获取网页中进一步获取我们需要的信息)
postData = urllib.urlencode({various'post'参数输入})#这里输入的post参数需要自己检查
req = urllib2.请求(url,postData)
pageContent = urllib2.urlopen (req)。读()
return pageContent#以HTML格式返回页面信息
获取到我们需要的网页信息后,我们还需要从获取到的网页中进一步获取我们需要的信息。这里我推荐使用 BeautifulSoup 模块。Python 没有附带它。您可以在百度谷歌下载安装。BeautifulSoup 翻译为“美味的汤”。您需要做的是从一锅汤中找到您喜欢吃的东西。
import re# 正则表达式,用于匹配字符
from bs4 import BeautifulSoup# 导入 BeautifulSoup 模块
汤=BeautifulSoup(pageContent)#pageContent是我们上面搜索到的页面
Soup 是BeautifulSoup 处理的HTML 格式字符串中的所有标签。一个标准的标签形式是:
hwkobe24
通过一些过滤的方法,我们可以从汤中得到我们需要的信息:
(1) find_all (name, attrs, recursive, text, **kwargs)
在这里,我们通过在标签上添加约束来获得我们需要的标签列表。比如soup.find_all('p')就是查找名为'p'的标签,而soup.find_all(class = "tittle")是查找所有class属性为"tittle"的标签,soup。 find_all (class = pie('lass')) 表示所有在class属性中收录'lass'的标签。这里用到了正则表达式(可以自己学,很有用)
在我们得到我们想要的所有标签的列表后,我们遍历列表,然后在标签中获取您需要的内容。通常我们需要标签的文字部分,也就是网页上显示的文字。代码如下:
tagList =soup.find_all(class="tittle")#如果标签比较复杂,可以使用多个过滤条件,使过滤更加严格
对于 tagList 中的标签:
打印标签文本
f.write (str(tag.text) )#将此信息写入本地文件以备后用
(2)find(name, attrs, recursive, text, **kwargs)
它和find_all()方法唯一的区别是find_all()方法的返回结果是一个收录一个元素的值列表,而find()方法直接返回结果
(3)find_parents() find_parent()
find_all() 和 find() 只搜索当前节点的所有子节点、孙子节点等。
find_parents() 和 find_parent() 用于搜索当前节点的父节点。搜索方法与普通标签的搜索方法相同。搜索文档 搜索文档中收录的内容
(4)find_next_siblings() find_next_sibling()
这两种方法使用 .next_siblings 属性来更新以后解析的所有兄弟标签节点。find_next_siblings() 方法返回所有满足条件的后续兄弟节点, find_next_sibling() 只返回满足条件的第一个标签。节点
(5)find_previous_siblings() find_previous_sibling()
这两个方法使用 .previous_siblings 属性迭代当前标签的先前解析的兄弟标签节点。 find_previous_siblings() 方法返回所有满足条件的先前兄弟节点, find_previous_sibling() 方法返回第一个兄弟节点符合条件。
(6)find_all_next() find_next()
这两个方法使用 .next_elements 属性来迭代当前标签之后的标签和字符串。find_all_next() 方法返回所有符合条件的节点, find_next() 方法返回第一个符合条件的节点。
(7)find_all_previous() 和 find_previous()
这两个方法使用 .previous_elements 属性来迭代当前节点前面的标签和字符串。find_all_previous() 方法返回所有满足条件的节点, find_previous() 方法返回第一个满足条件的节点。
实际代码示例:(抓取网页下的指定链接)
从 bs4 小鬼
#htmltext
html_text=""
汤=BeautifulSoup(html_text,'html.parser')
a=soup.select('a')
因为我在一个:
如果 i.string=="关键词":
findb_ur=i['href']
#输出搜索a标签中的字符串得到的网页链接
# 打印(findb_url)
#findb_url="https:"+finburl
alist=soup.find_all('a)
对于 alist:
1.通过下标操作
href=a['href']
打印(htref)
2.通过attrs属性
href=a.attrs['href']
打印(参考)