Chrome的检查工具将CSS选择器复制到第n个子级,这是bs4不支持的。浏览器、浏览器或应用程序是否有任何附加组件可以复制具有第n个类型伪类的CSS选择器?
BeautifulSoup
有自己的CSS选择器解析实现,它基本上解析CSS选择器字符串并将其转换为"find"命令:源代码。
一般来说,编写nth-child
的find()
或find_all()
版本是非常简单的。但是,我理解,始终牢记这一限制并将选择器或选择器的一部分翻译为"查找"语言可能会很不方便。
作为替代方案,您可以查看parsel
包,该包通常具有更好的CSS选择器支持:
In [1]: from parsel import Selector
In [2]: sel = Selector(text="""<html>
...: <body>
...: <h1>Hello, Parsel!</h1>
...: <ul>
...: <li><a href="http://example.com">Link 1</a></li>
...: <li><a href="http://scrapy.org">Link 2</a></li>
...: </ul
...: </body>
...: </html>""")
In [3]: sel.css('ul li:nth-child(2) a::attr(href)').extract_first()
Out[3]: 'http://scrapy.org'