python - 使用 Beautiful Soup 提取 css 链接

标签 python css beautifulsoup

我是 Beautiful Soup 的新手,我想提取使用它的网站的 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 文件的所有链接。但是,我还获得了其他链接,例如网站图标。我是 BeautifulSoup 的新手,我想知道是否有任何方法可以将其过滤为仅样式表。

此外,为了提取 JS,如果我在“script”标签上运行一个简单的 find_all,我将以非常不整洁的方式获得 JS 链接以及直接在 script 标签内写入的任何 JS。如果我运行一个与我的 CSS 相似的循环,

for link in soup.find_all('script'):        #Lists out all JS links
    print(link.get('src'))

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

我正在尝试使我尝试使用的所有或大多数网站的代码通用,所以虽然这对我目前使用的网站有效,但有些网站会使用“链接”来表示其他内容,而不仅仅是CSS链接。因此,如果您有更通用的逻辑或方法我可以用来检索网站的 css 链接/JSS 链接和代码,我将不胜感激!

谢谢!

最佳答案

你可以通过 extra parametersfind_all 以进一步过滤您的查询。

尝试:

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

关于python - 使用 Beautiful Soup 提取 css 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31163537/

相关文章:

javascript - 如何阻止 CSS 规则应用于特定元素

python - 无需安装即可使用/导入 Beautiful Soup 4

python - 使用整数行和标签列修改 pandas DataFrame 中的单个值

css - BootStrap - 背景颜色超出容器范围?

python - 尝试连接到 dask 仪表板时出现 "404 Not found"

css 下划线过渡悬停状态弹跳我的列表项

python - 网络抓取从网页中提取产品名称

python - BeautifulSoup - 如何单独查找特定的类名

python - 将 NetworkX 图嵌入到 PyQT 小部件中

python - Keras 自动编码器简单示例有一个奇怪的输出