BeautifulSoup提取内容的小技巧

回答一个简友的问题

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

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

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

<h4 class="title">
    <a target="_blank" href="/p/9f96987325bd">《30年后,你拿什么养活自己?》一上班族的财富人生规划</a>
</h4>

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,提取的才是内容,可以对比一下学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容