我正在尝试抓取许多站点,以查找是否存在某些代码段。在大多数情况下,刮板都能按预期工作。
我正在使用以下方法找到要查找的代码:
...
item["foo"] = response.xpath("//script[contains(text(), 'fooscript')]")
...
if len(item["foo"]) != 0:
doStuff()
但是,我的问题如下:有时我想找到的东西不在脚本本身中,而是作为脚本的源(我也知道如何抓取),有时当我使用JQuery时,无法获得正确的刮擦结果。
所以我的问题是,有没有一种更简单的方法可以浏览原始HTML / JS文本以找到与我要查找的内容匹配的内容?尝试查看所有适用于刮擦的替代方法将很快使代码膨胀,而我只需要查看是否存在此特定文本即可。在官方的scrapy文档中,我还没有找到合适的方法(尽管我对该工具还不甚了解,所以我可能会错过它),因此,如果有人对此有解决方案,将不胜感激。
答案 0 :(得分:0)
也许您正在寻找通过HTML源代码进行的简单正则表达式搜索?像
if re.search(r'fooscript', response.text):
doStuff()
或者,如果您只知道它包裹在某个元素中,而又不知道是哪个,则可以这样做
item["foo"] = response.xpath("//*[contains(text(), 'fooscript')]")
此外,您无需使用len
来简单地检查结果
if item["foo"]:
doStuff()
足够了。