python - 是否可以像在 BeautifulSoup 中一样通过 Scrapy 中的正则表达式查找元素
问题描述
我想返回具有满足正则表达式的特定文本的所有元素。就像在 BeautifulSoup 中一样
data = BeautifulSoup(result.text,'html.parser')
urls = [x.get('href')
for x in data.find(class_='newspaper-mainlisting').findAll('a', text = re.compile('\d*[\W-]Business'))]
如何通过 Scrapy 实现这一目标?
解决方案
您可以使用 EXSLT 扩展在 xpath 中使用正则表达式函数。
来自scrapy docs:
在 lxml 之上构建的 Scrapy 选择器支持一些 EXSLT 扩展,并带有这些预注册的命名空间以在 XPath 表达式中使用:
+--------+--------------------------------------+---------------------+ | prefix | namespace | usage | +--------+--------------------------------------+---------------------+ | re | http://exslt.org/regular-expressions | regular expressions | | set | http://exslt.org/sets | set manipulation | +--------+--------------------------------------+---------------------+
对于您的特定用途,您可能需要这样的东西:
//*[@class='newspaper-mainlisting']//a[re:test(text(), '\d*[\W-]Business')]/@href
推荐阅读
- php - 在类的构造函数中为类属性分配函数?
- c - 使用全局指针变量访问静态值是否有效?
- java - JBoss suddenly throwing errors
- python - Heroku Python 套接字连接失败
- android - Android 中的 afterTextChanged(Editable s) 无法正常工作
- swift - 我可以在没有子类化的情况下覆盖 func mouseDown 吗?
- javascript - React Router withRouter 与 AWS AppSync Provider 的兼容性
- python-3.x - Python 3.7 zlib 解压后的大小小于压缩后的大小
- java - 用于 Hbase 的 Mapreduce 的 NoSuchMethodError
- functional-dependencies - 如何确定无损连接依赖保留分解