测试网站:
http://www.pythonscraping.com/pages/warandpeace.html
内容初探
有一些奇怪的红绿分类
网页源码介入:
我们所要做的就是识别<>中的信息,然后提取它后面的内容
基础网络连接代码:
html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
bsObj = BeautifulSoup(html)
短短两行,我们把它变成了“美味汤”的对象
findall函数:
findAll(tag, attributes, recursive, text, limit, keywords)
接下来看一些实际需求:
** 需求1:**找出所有绿色的字
分析:那显然对应的就是tag为span,然后attr为class=‘green’
因此,代码为:
nameList = bsObj.findAll("span", {"class":"green"})
for name in nameList:#print(name)print(name.get_text())
用get_text()去除烦人的<>
结果为:
得到各种人名
** 需求2**:根据内容text搜索,用limit限制前n个
# text 搜索
nameList = bsObj.findAll(text = "the prince", limit = 2)
print(nameList)
返回结果:
哈哈,这个没啥意思,因为找出来的只能是the prince,主要试试功能而已
** 需求3:**根据keyword搜索
所谓的keyword我理解就是attr吧,我们可以看一个例子:
# keyword搜索
allText = bsObj.findAll(id="text")
print(allText[0].get_text())# class 是关键字,要加_
allText = bsObj.findAll(class_="green")
print(allText[0].get_text())
这里的class由于是关键字,所有要加_,实际上keyword确实等价于attr搜索:
总结:
好啦,今天就初步介绍了一下findall,希望后续可以坚持学习