使用漂亮的汤提取css链接

2024-04-25 19:51:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的美丽汤,我想提取一个网站的CSS和JS链接使用它。到目前为止,我已经成功了,但是有一个小缺陷。在

from bs4 import BeautifulSoup
import urllib.request

url="http://www.something.com"
page = urllib.request.urlopen(url)

soup = BeautifulSoup(page.read())
for link in soup.find_all('link'):      #Lists out css links
    print(link.get('href'))

在使用上面的代码片段时,我可以获得css文件的所有链接。不过,我也有其他的链接,比如favicon。我对beauthulsoup有点陌生,我想知道是否有任何方法可以将其过滤到样式表中。在

另外,对于提取JS,如果我在'script'标记上运行一个简单的find_all,我会得到JS链接以及直接在script标记中编写的任何JS,非常杂乱。如果我运行一个与CSS类似的循环

^{pr2}$

我得到的链接没有直接的JS写在脚本标记的文件中。我很确定有更好的方法来提取它,只是我有点困惑。看过这里的href提取链接,对我没什么帮助。在

我正在尝试使代码通用的所有或大多数网站,我尝试它,所以虽然这对我已经使用的网站,有些网站会使用'链接'的东西,而不仅仅是css链接。因此,如果您有一个更通用的逻辑或方法,我可以用来检索css链接/JSS链接和网站代码,我将非常感谢!在

谢谢!在


Tags: 方法代码标记importurl网站链接request
2条回答

您可以将extra parameters传递给find_all,以进一步过滤查询。在

尝试:

soup.find_all('link', rel="stylesheet")
soup.find_all('script', src=re.compile(".*"))

找到所有的“link”元素并过滤掉那些有这个元素的元素rel="stylesheet"。 您可以使用以下方法:

>>> [link["href"] for link in soup.findAll("link") if "stylesheet" in link.get("rel", [])]

我为当前的stackoverflow页面运行了上面的代码。 结果:

^{pr2}$

相关问题 更多 >