首页 > 解决方案 > 使用 bs4 和 Python 进行 URL 分离

问题描述

我正在为一堆链接抓取网站,这些链接位于单个 HTMLdiv标记中,带有<br />标记到换行符,但是当我尝试从中获取所有 URL 时,div它只是以单个字符串形式出现。

我无法在list. 我的代码如下:

使用以下代码,我正在抓取所有链接:

links = soup.find('div', id='dle-content').find('div', class_='full').find(
            'div', class_='full-news').find('div', class_='quote').text

以下是来自网站的 html:

<div class="quote">
<!--QuoteEBegin-->
https://example.com/asd.html
<br>
https://example.net/abc
<br>
https://example.org/v/kjg/
<br>
<br>
<!--QuoteEEnd-->
</div>

我从上面的代码得到的输出:

https://example.com/asd.htmlhttps://example.net/abchttps://example.org/v/kjg/

我想要的输出:

[
"https://example.com/asd.html",
"https://example.net/abc",
"https://example.org/v/kjg/"
]

标签: pythonpython-3.xweb-scrapingbeautifulsoup

解决方案


尝试这个:

from bs4 import BeautifulSoup

sample = """<div class="quote">
<!--QuoteEBegin-->
https://example.com/asd.html
<br>
https://example.net/abc
<br>
https://example.org/v/kjg/
<br>
<br>
<!--QuoteEEnd-->
</div>"""

soup = BeautifulSoup(sample, "html.parser").find_all("div", class_="quote")
print([i.getText().split() for i in soup])

输出:

[['https://example.com/asd.html', 'https://example.net/abc', 'https://example.org/v/kjg/']]

推荐阅读