如何将 CSS Selector 的输出传递给美丽的汤?
Posted
技术标签:
【中文标题】如何将 CSS Selector 的输出传递给美丽的汤?【英文标题】:How to pass the output of CSS Selector to beautiful soup? 【发布时间】:2016-05-22 20:42:19 【问题描述】:我想抓取一些网页,我正在使用一个名为“SelectorGadget”的 Chrome 扩展程序。它是一个 CSS 选择器。现在以这个 URL 为例:http://www.www2015.it/documents/proceedings/forms/proceedings.htm CSS 选择器为我提供了论文列表的输出: tr~ tr+ tr td+ td a 现在,问题是我不知道如何将这个输出传递给漂亮的汤。在以下几行中,.select() 无法识别这些选择器!
import requests
page = requests.get("http://www.www2015.it/documents/proceedings/forms/proceedings.htm")
import bs4
soup = bs4.BeautifulSoup(page.content)
soup.select("tr~ tr+ tr td+ td a")
【问题讨论】:
您可以发布您的代码吗?到现在为止你有什么? 你的意思是.select(...)
?
@jonrsharpe 在我使用 .select() 时显示:不支持或无效的 CSS 选择器:“tr~”
然后使用受支持且有效的选择器,但这就是您在 BS 中使用选择器的方式。
@jonrsharpe 你的意思是选择器小工具返回了无效的选择器吗?
【参考方案1】:
问题是 - BeautifulSoup
有一个 very limited CSS selector syntax support。在您的情况下,与~
或+
横向移动是行不通的。
如果您希望匹配此页面上的 pdf
链接,我会使用以下选择器:
soup.select("a[href$=pdf]") # get the links where href ends with "pdf"
【讨论】:
你知道任何能够处理这些选择器的scarper吗? @RaminZahedi 是的,查看 lxml.cssselect。以上是关于如何将 CSS Selector 的输出传递给美丽的汤?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 css 变量传递给 Javascript 对象中的媒体查询? [复制]