您的位置:首页 > 理论基础 > 计算机网络

python网络数据采集学习范例—利用CSS爬取网站特定标签,BeautifulSoup函数介绍及子标签

2017-10-05 20:13 846 查看
from urllib.request import urlopen
from bs4 import  BeautifulSoup
html=urlopen('http://www.pythonscraping.com/pages/warandpeace.html')
obj=BeautifulSoup(html.read())
namelist=obj.findAll("span",{'class':'green'})
for name in namelist:
print(name.get_text())
简介:链接是一个小说内容,其中名字都是绿色标记,对话内容都是红色标记,通过查看网页源代码span标签。.findAll(tagName, tagAttributes)函数可以获取页面中所有指定的标签。.get_text() 会把你正在处理的HTML文档中所有的标签都清除,然后返回一个只包含文字的字符串(也就是我们只要的名字)。
findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
递归参数recursive 是一个布尔变量,如果recursive 设置为True,findAll 就会根据你的要求去查找标签参数的所有子标签,以及子标签的子标签.
文本参数text 是用标签的文本内容去匹配,而不是用标签的属性,如:nameList = bsObj.findAll(text="the prince")。
范围限制参数limit,显然只用于findAll 方法。find 其实等价于findAll 的limit 等于1 时的情形。
导航树:通过标签在文档中的位置来查找标签。
实例:
html=urlopen('http://www.pythonscraping.com/pages/page3.html')
obj=BeautifulSoup(html,"html.parser")
如果你只想找出子标签,可以用.children 标签:for child in bsObj.find("table",{"id":"giftList"}).children:
处理兄弟标签.next_siblings,可以选择表格中除了标题行以外的所有行:for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:             #.tr是获得标题第一行,即标题行。
.previous_siblings返回最后一个标签。、
父标签:parent 和parents
print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text()),打印图片对应的价格。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: