BeautifulSoup是一个Python库,可以让开发者写少量代码就可以快速解析网页HTML码, 从中提取出使用者有兴趣的内容。
例:
假如我们爬取的网页URL为:https://www.test.com/column/8
其网页HTML码为:
<div class="list" data-v-b065db7e="">
<div class="tags" data-v-e6ce9014="" data-v-b065db7e="">
<p class="initial" data-v-e6ce9014="">E</p>
<div class="list" data-v-e6ce9014="">
<a href="/tag/80" target="_blank" class="item" data-v-e6ce9014=""><span data-v-e6ce9014="">俄罗斯</span></a>
<a href="/tag/8088" target="_blank" class="item" data-v-e6ce9014=""><span data-v-e6ce9014="">Excel</span></a>
</div>
</div>>
<div class="tags" data-v-e6ce9014="" data-v-b065db7e="">
<p class="initial" data-v-e6ce9014="">B</p>
<div class="list" data-v-e6ce9014="">
<a href="/tag/4605" target="_blank" class="item" data-v-e6ce9014=""><span data-v-e6ce9014="">北漂</span></a>
<a href="/tag/8098" target="_blank" class="item" data-v-e6ce9014=""><span data-v-e6ce9014="">波司登</span></a>
</div>
</div>
</div>
我们想要获取的内容为:
href content
-----------------------------
/tag/80 俄罗斯
/tag/8088 Excel
/tag/4605 北漂
/tag/8098 波司登
则代码可以为:
import requests
from bs4 import BeautifulSoup
resp = requests.get("https://www.test.com/column/8")
soup = BeautifulSoup(resp.text, "html.parser")
list = soup.find("div", class_="list")
tags = list.find_all("div", class_="tags")
for tag in tags:
tag_a = tag.find_all("a")
for a in tag_a:
href = a["href"]
content = a.span.get_text().strip()
print(href+" "+content)
输出
/tag/80 俄罗斯
/tag/8088 Excel
/tag/4605 北漂
/tag/8098 波司登