python - 如何使用Scrapy抓取有分页的网站?

标签 python scrapy

我正在尝试抓取一个有分页的网站。如果我单击页面底部的“下一步”按钮,将生成新项目。我的 scrapy 程序无法获取动态数据。有什么办法可以获取这些数据吗?

下一个按钮的 HTML 如下所示

<div id="morePaginationID">

<a href="javascript:void(0);" onclick="lazyPagingNew('db')"></a>

我的蜘蛛是

class ExampleSpider(CrawlSpider):

    name = "example"
    domain_name = "example.com"
    allowed_domains = ["example.com"]
    start_urls = ["http://example.com/beauty/90?utm_source=viewallbea"]
    rules = ( Rule(SgmlLinkExtractor(allow=('.*',),restrict_xpaths=('//div[@id="morePaginationID"]',)), callback = "parse_zero" , follow= True), )
    def parse_zero(self,response):
        hxs = HtmlXPathSelector(response)
        paths = hxs.select('//div[@id="containerDiv"]/div[@id="loadFilterResults"]/ul[@id="categoryPageListing"]/li')
        m = len(paths)
        for i in range(m):

            item = ExampleItem()

            item["dealUrl"] = paths[i].select("figure/figcaption/a/@href").extract()[0]

            url = str(item["Url"])
            yield Request(url, callback=self.parselevelone, meta={"item":item})
        spider = ExampleSpider()
    def parselevelone(self, response):
        hxs = HtmlXPathSelector(response)
        item = response.meta["item"]
        item["Title2"] = hxs.select('//div[@class="fullDetail"]/div/figure/figcaption/h2/text()').extract()[0]
        items.append(item)
        return item

最佳答案

您需要做的是:

1) 打开火狐浏览器

2) 运行FireBug控制台

3) 进入搜索结果页面

4) 由于结果是动态变化的并且不会转到另一个页面,因此 Javascript 代码正在为下一页结果调用另一个 URL(API)

5) 请参阅 Firebug 控制台以获取此网址

6) 您需要将 Scrapy 设置为调用 Javascript 函数正在调用的同一 URL。它很可能会返回 JSON 或 XML 格式的结果数组,这很容易在 Python 中操作

7)很可能它会有一个“pageNo”变量。因此,迭代页码并获取结果!

关于python - 如何使用Scrapy抓取有分页的网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370308/

相关文章:

python - Scrapy 管道到 MySQL - 找不到答案

python - 从脚本运行蜘蛛时获取 scrapycrawl 命令的功能

python - PyQt QApplication.aboutToQuit()

python - Microsoft-Graph : Failing to get token from python code: Error SSLError(SSLCertVerificationError(1, '[SSL:CERTIFICATE_VERIFY_FAILED]

python - 在 python 中计算体积或表面积的好算法

python - 如何使用 PyCharm 调试 Scrapy 项目

python - 抑制管道后在日志中打印的 Scrapy Item

python - 为列表分配内存

python - 自定义 python 回溯或调试输出

python - scrapy 抓取所有具有此语法的页面