如何获取指定的标签的内容是解析网页爬取数据的必要手段,比如想获取<div class=‘xxx‘> ...<div>这样的div标签,按照BeautifulSoup官方文档的说明怎么都不能成功,后来在百度知道(http://zhidao.baidu.com/question/433247968620775644.html)找到答案,真是扯淡,附上有效代码:
bs=BeautifulSoup(html) print bs.find_all(name=‘div‘,attrs={"class":"footer"})#按照字典的形式给attrs参数赋值
完整的:
from bs4 import BeautifulSoup import urllib2def getTargetDiv(url,myAttrs): html=urllib2.urlopen(url).read() bs=BeautifulSoup(html) return bs.find_all(name=‘div‘,attrs=myAttrs) if __name__=="__main__": url=r‘http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/‘ myAttrs={‘class‘:‘footer‘} print getTargetDiv(url, myAttrs)
按照官方文档(http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/)的做法:
#1.soup.find_all("a", class_="sister") #2.css_soup.find_all("p", class_="body") #3.soup.find_all(href=re.compile("elsie"))
改成
bs.find_all(name=‘div‘,class_=re.compile(‘info_item‘)) 或者bs.find_all(‘div‘,class_=‘info_item‘)
都没有匹配结果,经测试需要bs.find_all(name=‘div‘,attrs={"class":"footer"})这样以字典的形式给attrs参数赋值才可以。
时间: 2024-12-25 21:45:39