[关闭]
@myles 2018-12-20T20:52:22.000000Z 字数 1814 阅读 647

BeautifulSoup4 常用方法

未分类


BeautifulSoup4 常用信息提取方法

一、soup.select() 信息提取

soup.select() 方法主要配合 “css selector 路径信息”进行tag标签信息的提取,在结合tag标签方法进行具体“信息”的提取。

序号 tag方法 提取内容
1 tag.get_text() 进行标签中的字符串提取;
2 tag.get('attr') 依据属性名进行属性值的提取,如tag.get('src')进行链接信息提取;
3 tag.stripped_strings 进行标签中多之标签信息的提取
  1. # coding:utf-8
  2. from bs4 import BeautifulSoup
  3. '''
  4. 使用google浏览器 ---》“检查” -> “copy” -> “Copy Selector” 定位标签的层叠描述位置路径;
  5. images: body > div.main-content > ul > li:nth-child(1) > img
  6. titles: body > div.main-content > ul > li:nth-child(1) > div.article-info > h3 > a
  7. cates: body > div.main-content > ul > li:nth-child(1) > div.article-info > p.meta-info > span:nth-child(1)
  8. rates: body > div.main-content > ul > li:nth-child(1) > div.rate > span
  9. descs: body > div.main-content > ul > li:nth-child(1) > div.article-info > p.description
  10. 注意:路径信息定位时,注意从父路径进行“所有子标签”信息的全部提取...
  11. '''
  12. # 1、解析源码文件为字符串对象
  13. with open('new_index.html','r') as f:
  14. html_text = f.read()
  15. # 2、解析字符串对象为“html文档结构”对象
  16. soup = BeautifulSoup(html_text,'lxml')
  17. # 3、使用html文档结构对象 “select 方法” 配合 “层叠样式路径” 进行数据标签tag信息提取
  18. images = soup.select('body > div.main-content > ul > li > img')
  19. titles = soup.select('body > div.main-content > ul > li > div.article-info > h3 > a')
  20. cates = soup.select('body > div.main-content > ul > li > div.article-info > p.meta-info')
  21. rates = soup.select('body > div.main-content > ul > li > div.rate > span')
  22. descs = soup.select('div.main-content > ul > li > div.article-info > p.description')
  23. # print(cates)
  24. # print(images,titles,cates,rates,descs,sep='\n**************************\n')
  25. # 使用tag标签方法 get_text() & get('attr_name') 获 “取字符串描述” 与 “图片链接”;
  26. # 学习 zip() 方法使用;
  27. info =[]
  28. for image,title,cate,rate,desc in zip(images,titles,cates,rates,descs):
  29. data = {
  30. 'title':title.get_text(),
  31. 'rate' :rate.get_text(),
  32. 'desc' :desc.get_text(),
  33. # 'cate' :cate.get_text(),
  34. 'cate' :list(cate.stripped_strings),
  35. 'image':image.get('src')
  36. }
  37. # print(data ,'\n********************************\n')
  38. info.append(data)
  39. for x in info:
  40. if float(x['rate']) > 3.0 :
  41. print(x['title'],x['cate'])

二、soup.find_all() 信息提取

tags 标签信息提取与收集

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注