python抓取网页数据(【BeautifulSoap】BeautifulSoap类soupBeautifulSoup()())

优采云 发布时间: 2021-10-11 14:03

  python抓取网页数据(【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

  ---------------------

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线