【问题标题】:Scrapy: extract text from span without class or idScrapy:从没有类或id的span中提取文本
【发布时间】:2021-06-13 21:56:46
【问题描述】:

我有以下html结构:

我想从突出显示的范围(使用 Scrapy)中提取文本(““Business-Thinking”-Fokus im Master-Kurs”),但是我无法访问它,因为它不包含任何特定的类或身份证。

我尝试使用以下绝对 xPath 访问它:

sel.xpath('/html/body/div[4]/div[1]/div/div/h1/span/text()').extract()

我没有收到任何错误,但是它返回一个空白文件,这意味着没有提取文本。

注意:父类不是唯一的,这就是我不使用相对路径的原因。随着文本的变化,我也无法通过查找它包含的文本来达到跨度。

您对我应该如何修改我的 xPath 以提取文本有什么建议吗?谢谢!

【问题讨论】:

  • 嗨,Alex,您能否将 html 结构共享为代码而不是图像的链接。拥有指向您希望提取的网页的链接也将有所帮助,以便我们对其进行测试。
  • 嗨,Ryan,这是网页的链接:aback-blog.iwi.unisg.ch/2021/02/18/… 我要做的是提取每篇博客文章的标题。我不确定如何仅分享显示整个结构的 html 代码的摘录,但不粘贴整个详细代码,因为它不可读。
  • 在我看来父类是独一无二的。例如“container-blogsingle”在我查看的几个页面中只出现一次。另一个锚点是标题总是在带有“行页眉”类的 div 之前。在具有“容器”类的 div 之后,它也总是一个 h1 标记。这里有很多选择。
  • 非常感谢@mr_mooo_cow,我使用“container-blogsingle”类作为锚点,我可以提取标题。为什么它不能与绝对 xPath 一起使用对我来说仍然是个谜……但这个案子已经解决了!

标签: python html web-scraping xpath scrapy


【解决方案1】:

如果您使用scrapy shell url 加载页面,它会在没有javascript 的情况下加载。 当您查看没有 javascript 的源时,跨度的 xpath 是 /html/body/div/div[1]/div/div/h1/span

要在 Scrapy 中使用 javascript 加载网页,请使用 Splash。

【讨论】:

  • 这个 xpath 确实有效!请问您如何在没有javascript的情况下加载页面?我运行了scrap shell url,然后运行了view(response),但是当我检查它时,页面的源代码看起来与原始代码相同......我错过了任何步骤吗?抱歉,我对此有点陌生。
  • 你可以在shell中print(response.text)或者在使用view(response)时,进入开发工具,网络选项卡,确保禁用缓存被选中,在过滤框中点击ctrl+shift+P,开始输入 Javascript 并选择禁用 Javascript。重新加载页面,源将是没有 Javascript 加载的页面的源。我自己是新手,这周才学会的;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
相关资源
最近更新 更多