【问题标题】:CSS Selectors for Scrapy Web Scraping用于 Scrapy Web Scraping 的 CSS 选择器
【发布时间】:2018-11-16 18:53:05
【问题描述】:

我目前正在尝试抓取网站上列出的所有商场

https://web.archive.org/web/20151112172204/http://www.simon.com/mall

使用 Python 和 Scrapy。我不知道如何提取文本“Anchorage 5th Avenue Mall”。

<div class="st-country-padding">
    <h4><a class="no-underline" href="/web/20151112172204/http://www.simon.com/search/alaska%2b(ak)" title="View Malls In Alaska">Alaska</a></h4>
        <div>
            <a href="/web/20151112172204/http://www.simon.com/search/anchorage,+ak" title="Malls in Anchorage, AK">Anchorage</a>:
                <a href="http://www.simon.com/mall/anchorage-5th-avenue-mall" title="View Anchorage 5th Avenue Mall Website">Anchorage 5th Avenue Mall</a>
        </div>
</div>

我尝试了许多不同的尝试,包括

response.css("a::attr(title)").extract()

但没有给我我想要的东西。

请注意,安克雷奇只是第一个购物中心的名称,所以我不能直接调用它,因为有大约 200 个不同的购物中心

【问题讨论】:

  • Do not post images of code or errors! 图片和屏幕截图可以很好地添加到帖子中,但请确保帖子在没有它们的情况下仍然清晰有用。如果您发布代码或错误消息的图像,请确保您也复制并粘贴或直接在帖子中输入实际代码/消息
  • 我不确定是什么问题。任何代码都没有错误。另外,我认为屏幕截图使我的问题更加清晰
  • @WhiteDillPickle:Rob 是说 DOM 视图的屏幕截图应该以代码的形式复制,因为它并不完全需要在屏幕截图中(图像可能由于多种原因变得不可用例如服务器或网络问题,当上下文丢失时使问题无法回答)。您可以通过右键单击外部元素并选择复制外部 HTML 来实现。我已经为你做到了。
  • 好的,我很感激

标签: html python-3.x web-scraping scrapy css-selectors


【解决方案1】:

::attr(title) 为您提供title 属性的值。你想要的是文本,所以你需要使用::text来代替。

此外,似乎没有一个好的方法来识别您想要的 a 元素,因为它没有任何东西可以将它与其他元素区分开来,因此需要一些路径。让我知道这是否适合您:

response.css(".st-country-padding > div > a:last-of-type::text").extract()

【讨论】:

  • 不完全是,它实际上只选择了“安克雷奇”和商场所在的所有其他城市,而不是商场名称本身。
  • 从第二个 a 元素中提取标题可能更容易,因此只需获取 -“查看 Anchorage 5th Avenue Mall 网站”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-05-03
  • 2020-04-23
  • 1970-01-01
相关资源
最近更新 更多