Python - 利用BeautifulSoup获取网页内容

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  波司登
1赞

如果是xml的话, 可以试试xpath哦