【问题标题】:Different webpage results when using Scrapy使用 Scrapy 时的不同网页结果
【发布时间】:2020-05-31 23:55:58
【问题描述】:

我正在训练使用 scrapy 在超市网站上抓取: https://www.pnp.co.za/pnpstorefront/pnp/en/All-Products/Fresh-Food/Milk-%26-Cream/c/milk-and-cream703655157

我注意到在使用 chrome 时,我会得到一个页面,显示 5 个页面上的 106 个结果。但是,当使用带有 scrapy(和其他抓取软件)的 spide 时,结果数量会减少到 2 页上的 30 个产品。似乎该站点限制了使用 scrapy 时显示的结果。一个人如何解决这个问题,让一只爬虫蜘蛛被视为我在 Chrome 上的笔记本电脑?

我使用以下 cmd 来运行 sypder:

scrapy crawl tstPnPCategories -o out.csv

这里是 spyder 脚本:

import scrapy

class testSpydi(scrapy.Spider):
    name = 'tstPnPCategories'
    start_urls = [
        'https://www.pnp.co.za/pnpstorefront/pnp/en/All-Products/Fresh-Food/Milk-%26-Cream/c/milk-and-cream703655157'
    ]

    def parse(self, response):
        names = response.css(".item-name::text").extract()

        print("*** *******")
        print("")
       print("NAMES")
        print("")
        print("************")
        for name in names:

            print("")
            print(name)
            print("")
            yield {
                'item': name
            }

        next_page = response.css("li.pagination-next a::attr(href)").get()

        if next_page is not None:
            yield response.follow(next_page, self.parse)


【问题讨论】:

  • @jsotola,注意到,德克萨斯州。关于如何使用 scrapy 选择区域的任何建议?一点头绪都没有。

标签: web-scraping scrapy


【解决方案1】:

您必须选择不同的区域才能抓取更多项目的数据。

脚本必须单击下拉菜单项之一。

可以通过发出以下命令单击下拉列表中的第一项:

document.getElementsByClassName('js-base-store')[0].click()

该元素是使用 Chrome 浏览器中的开发者工具识别的。

DevTools 通过按 F12ctrl + shft + I 或在浏览器菜单(三个垂直点)

这是要查找的内容。

【讨论】:

  • 可以找到使用 Scrapy 进行点击的工具
  • 你应该想how to do webpage clicks with python?
  • 用python点击不是问题。问题是在 Scrapy 中进行。使用 Scrapy 时,我在“稀疏”函数中工作。到那时,信息已经被收集为一个 html,收集在我随后搜索的对象“响应”中。我无法在“解析”函数的主体内单击。必须在 Scrapy 获取 html 之前完成点击操作才能获取正确的 html 页面/内容......我一直在检查如何做到这一点,但到目前为止还没有运气。
猜你喜欢
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2013-11-23
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多