python抓取网页数据(【BeautifulSoap】BeautifulSoap类soupBeautifulSoup()())
优采云 发布时间: 2021-10-11 14:03python抓取网页数据(【BeautifulSoap】BeautifulSoap类soupBeautifulSoup()())
一、美丽肥皂
1.首先必须导入bs4库来创建BeautifulSoap对象
#coding=utf-8
从 bs4 导入 BeautifulSoup
汤 = BeautifulSoup(html,'lxml') #html 是下载的网页,lxml 是解析器
2.BeautifulSoap主要掌握三种方法
find_all('tag') 搜索所有标签标签的当前集合
find("tag") 返回一个标签(此方法使用较少)
select("") 可以按标签搜索,主要用于按标签搜索和过滤元素
二、使用 BeautifulSoup 提取网页内容的一些技术
1.find_all()方法中的单个标签名,如a,会提取网页中所有的a标签。这里我们必须确保它是我们需要的链接a。一般来说,它不是。您需要添加条件(即标签的属性,加上限制性过滤)。如果没有这个和标签的属性,最好去上层找。
, 链接:用笑话戳我,抢原创 笑话。
(顺便说一句,小白在这上面找了很久,才看到藏在跨度里的笑话,总觉得自己有点弱智=_=)
注意:如果你写find_all("span"),可以抓取段落的内容,但是也会收录网页上其他span的内容,所以我们要查看上层标签。
它只是一个收录段落内容的标签。
#coding=utf-8
从 bs4 导入 BeautifulSoup
*敏*感*词*请求
#使用requests抓取页面内容并将响应赋值给page变量
html = requests.get('')
#使用content属性获取页面的源页面
#使用BeautifulSoap进行解析,并将内容传递给BeautifulSoap类
汤 = BeautifulSoup(html.content,'lxml')
链接 = 汤.find_all('div',class_='content')
#link的内容就是div,我们取的span内容就是我们需要的段落内容
对于链接中的链接:
打印 link.span.get_text()
操作结果:
2.select() 方法
我们需要的内容可以逐层查找。这个特别方便,也就是定位,防止单个标签无法定位到我们需要的内容元素。
sound.select("html head title") #标签级别搜索
汤.select("td div a") #标签路径td-->div-->a
汤.select('td> div> a')#note: 推荐使用这种表示法
选择谷歌浏览器,右键复制--复制选择器
获取内容的任务:
#qiushi_tag_120529403> a> div> span:nth-child(1)
这个内容需要改一下~按标签顺序搜索
div> a> div> span(我在运行的时候发现了一个问题,>前后必须有空格,否则会报错)
然后代码如下:(和前面的代码区别只有最后三行)
#coding=utf-8
从 bs4 导入 BeautifulSoup
*敏*感*词*请求
#使用requests抓取页面内容并将响应赋值给page变量
html = requests.get('')
#使用content属性获取页面的源页面
#使用BeautifulSoap进行解析,并将内容传递给BeautifulSoap类
汤 = BeautifulSoup(html.content,'lxml')
#我是分隔符,下面是select()方法~
链接 = 汤.select('div> a >div >span')
对于链接中的链接:
打印 link.get_text()
操作结果:
啊哦~有没有发现和上面操作的结果不一样?评论也在这里匹配,所以:
我们还需要修改定位使其更加精确,从标签a开始,并添加其class属性。a.contentHerf 写在 select 方法中。
具体是这样的:a.contentHerf>div>span(改成代码第三行再运行一次~)
吃饭的时候没发~
注意:1)示例只介绍了一页的内容
2)代码在python中运行2.7
---------------------