如何使用scrapy刮取某个文本,而不管它包含在哪个标记中

2024-05-08 02:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图搜集一些网站,以找出是否存在某个代码片段。大多数情况下,铲运机都能完美地工作

我使用以下方法查找我要查找的代码位:

...
item["foo"] = response.xpath("//script[contains(text(), 'fooscript')]")

...
if len(item["foo"]) != 0:
    doStuff()

但是,我的问题是:有时我想找到的不是脚本本身,而是作为脚本的源(我也知道如何刮取这个),有时当使用JQuery时,我无法得到正确的刮取结果

所以我的问题是,有没有一种更简单的方法来浏览原始的HTML/JS文本,以找到与我要查找的内容相匹配的内容?尝试查看所有替代scrape的方法将很快使代码膨胀,我只需要查看是否存在此特定文本。我还没有找到一个合适的方法,从官方的剪贴文档(虽然我还是有点经验不足的工具,所以我可能错过了),所以如果有人有一个解决方案,这将是非常感谢


Tags: 方法代码text文本脚本内容foo网站
1条回答
网友
1楼 · 发布于 2024-05-08 02:48:24

也许通过HTML源代码进行简单的regex搜索就是你想要的?像这样的

if re.search(r'fooscript', response.text):
    doStuff()

或者,如果你只知道它被包装在某个元素中,却不知道是哪个元素,你可以这样做

item["foo"] = response.xpath("//*[contains(text(), 'fooscript')]")

此外,您不需要使用len来检查结果,只需

if item["foo"]:
    doStuff()

够了

相关问题 更多 >