【问题标题】:data does not appear correctly数据显示不正确
【发布时间】:2021-02-01 17:04:59
【问题描述】:

我在使用scrapy蜘蛛显示电话号码时受到限制,这应该显示电话号码,但它不起作用,似乎我必须点击“点击通话”才能显示号码但是当我添加显示电话号码但不起作用的css类 '调用': products.css('span.hz-pro-search-result__contact-info__cover::text').get(),

scrapy spider 只打印“点击通话” 它应该显示一个电话号码

import scrapy

class houzzSpider(scrapy.Spider):
    name = 'houzz'
    start_urls = ['https://www.houzz.com/professionals/interior-designer']

    def parse(self, response):
        for products in response.css('div.hz-pro-search-result'):
            try:
                yield {
                    # 'Name': products.css('a').find('span.header-5.text-unbold.mlm::text').get(),
                    'Call': products.css('span.hz-pro-search-result__contact-info__cover::text').get(),

                }
            except:
                yield {                   
                    'Call': products.css('span.hz-pro-search-result__contact-info__cover::text').get(),

                }
        next_page = response.css('a.hz-pagination-link.hz-pagination-link--next').attrib['href']
        if next_page is not None:
            yield response.follow(next_page, callback=self.parse)

【问题讨论】:

  • 电话号码是隐藏的,所以如果你想看到它们并保存它们,你必须点击“点击通话”然后你才能得到号码

标签: python web-scraping beautifulsoup scrapy


【解决方案1】:

当使用“点击通话”链接时,您尝试抓取的数据是使用 javascript 填充的。

它以包含在页面源代码中的巨大 (450kB) json blob 的形式提供:

<script id="hz-ctx" type="application/json">...</script>

如果您使用 json 库加载此数据并找出所需数据的路径,您应该能够毫无问题地提取它。

【讨论】:

  • 你能告诉我如何使用 ""
  • response.css('#hz-ctx::text').get()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多