首页 > 解决方案 > 怎么刮

问题描述

我是新手使用scrapy。我想在这个网站harga-hp中抓取链接。在这个元素中,就像我分享图片一样

图片

当我点击小米时,它会链接到小米页面,然后我会抓取价格和名称。有人可以帮我修复此代码。

import scrapy
from handset.items import HandsetItem
class HandsetpriceSpider(scrapy.Spider):
    name = 'handsetprice'
    start_urls = ['http://id.priceprice.com/harga-hp/']

    def parse(self, response):
        urls = response.css('ul.maker > a::attr(href)').extract()
        for url in urls:
            url = response.urljoin(url)
            yield scrapy.Request(url=url, callback=self.parse_details)

        next_page_url = response.css('li.last > a::attr(href)').extract_first()
        if next_page_url:
            next_page_url = response.urljoin(next_page_url)
            yield scrapy.Request(url=next_page_url, callback=self.parse)

    def parse_details(self, response):
        yield {
            'Name' : response.css('li.name a::text').extract_first(),
            'Price' : response.css('.newPice::text').extract_first(),         
        }

和 items.py :

import scrapy
from scrapy.item import Item, Field
class HandsetItem(scrapy.Item):
    Name =scrapy.Field()  
    Price =scrapy.Field()

标签: pythonscrapy

解决方案


'urls' 的 css 选择器需要路径 'ul > li > a',就像在您的问题主题中一样。

您还在 parse_details() 中错误地拼写了“newPrice”,这会在您修复 urls 选择器后冒泡。


推荐阅读