【问题标题】:How do I convert css selector path copied from Chrome to beautifulsoup obejct?如何将从 Chrome 复制的 css 选择器路径转换为 ​​beautifulsoup 对象?
【发布时间】:2020-01-27 22:03:48
【问题描述】:

我一直在尝试创建一个函数,当给出从 Chrome 开发工具复制的 css 选择器路径时返回 beautifulsoup 对象。

当我从 Chrome 复制一个元素的 css 选择器路径时,它是这样的:

body > table > tbody > tr:nth-child(2) > td.ColumnText2

如果我想让它成为一个合法的 beautifulsoup 对象,我会手动解析它

html = urlopen("https://someurl.com")

bs = BeautifulSoup(html, 'html.parser')

bs.body.find_all('table')[3].find_all('tbody')[0].find_all('tr')[2].find_all('td', {'class': 'ColumnText2'})

但这真的很笨拙,如果我必须手动完成,那么创建一个函数是没有意义的。是否有某种内置解析器可以立即将此 css 选择器路径转换为 ​​beautifulsoup 对象?

【问题讨论】:

  • 也许看看soup.select 允许通过css搜索的方法?
  • @politicalscientist 哇,它马上就奏效了。我什至不需要做任何事情。也许我应该更彻底地搜索。这解决了我的问题谢谢。如果您回答问题而不是评论,我会确保选择答案。
  • 太棒了! .select 对我来说是一个改变游戏规则的人:)

标签: python html beautifulsoup css-selectors


【解决方案1】:

另请注意,即使源中没有 tbody 元素,Chrome 也会在表格中插入它。尝试从选择器中删除 > tbody

【讨论】:

  • 确实如此。在我最终发现之前,这给了我过去的痛苦。感谢您的意见。
【解决方案2】:

** 请尝试在 Beautifulsoup 中选择**

html = urlopen("https://someurl.com")

bs = BeautifulSoup(html, 'html.parser')

name_tags=bs .select("body > table > tbody > tr:nth-child(2) > td.ColumnText2")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 2021-11-16
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多