BeautifulSoup提取内容的小技巧

回答一个简友的问题

在之前的一篇文章《爬虫搜索神器BeautifulSoup和XPath 的使用》中,我介绍了BeautifulSoup和XPath,但在具体的使用方法上,没有做过多的详细说明。

需要说明的是BeautifulSoup是基于DOM的,会载入整个文档,再解析整个DOM树。

BeautifulSoup的find_all('tag')方法,是按照tag取出来的tag标签及其内容。那如何取到标签的内容,或者子标签的内容。实际上这还是一个DOM的层级结构问题。
之所有要选取到提取h4标签,而不是直接find_all('a'),是因为网页上的a标签很多,一些不是我们所需要提取的内容。

《30年后,你拿什么养活自己?》一上班族的财富人生规划

links = soup.find_all('h4') ,要提取a标签的文字内容,应该是这样:

for link in links:
       print link.a.get_text()
       #print link.a.text
       print link.a['href']

即link(h4)下的a下的文字,而href是属性,就是link.a['href']即可。

完整代码:

def getHtml(url):
   return requests.get(url).text


def parse(html):
    html = getHtml(html)
    soup = BeautifulSoup(html,'html.parser',from_encoding='utf-8')
    links = soup.find_all('h4')
    for link in links:
       print link.a.get_text()
       #print link.a.text   #也可以
       print link.a['href']  #提取h4下a标签的href中的链接

不同标签内容(属性)提取的关键是理解、弄清文档结构。更多用法,还要要多看文档:《Beautiful Soup 4.2.0 文档》

XPath提取出来的也是标签,加上text(), @href,提取的才是内容,可以对比一下学习。

你可能感兴趣的:(BeautifulSoup提取内容的小技巧)