【问题标题】:How to scrape a certain text regardless of which tags it is contained in using scrapy如何使用scrapy抓取某个文本,而不管它包含哪些标签
【发布时间】:2019-03-18 20:55:16
【问题描述】:

我正在尝试抓取多个站点以查找是否存在某个代码 sn-p。大多数情况下,刮刀都能按预期完美运行。

我正在使用以下方法来查找我要查找的代码:

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

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

但是,我的问题如下:有时我想要找到的东西不在脚本本身,而是作为脚本的来源(我也知道如何抓取它),有时在使用 JQuery 时,我无法获得正确的抓取结果。

所以我的问题是,有没有一种更简单的方法可以查看原始 HTML/JS 文本以找到我正在寻找的匹配项?尝试查看所有替代方案会很快使代码膨胀,我只需要查看是否存在此特定文本。我还没有从官方的scrapy文档中找到合适的方法(尽管我对该工具仍然有些缺乏经验,所以我可能会错过它),所以如果有人对此有解决方案,将不胜感激。

【问题讨论】:

    标签: javascript python html scrapy


    【解决方案1】:

    也许您正在寻找通过 HTML 源代码进行的简单正则表达式搜索?类似的东西

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

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

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

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

    if item["foo"]:
        doStuff()
    

    够了。

    【讨论】:

    • 完美,这正是我想要的!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2017-09-25
    • 2019-03-23
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多