有什么方法可以获得具有第n个类型的伪类的CSS选择器吗



Chrome的检查工具将CSS选择器复制到第n个子级,这是bs4不支持的。浏览器、浏览器或应用程序是否有任何附加组件可以复制具有第n个类型伪类的CSS选择器?

BeautifulSoup有自己的CSS选择器解析实现,它基本上解析CSS选择器字符串并将其转换为"find"命令:源代码。

一般来说,编写nth-childfind()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'

最新更新