问题描述
我是新手使用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()
解决方案
'urls' 的 css 选择器需要路径 'ul > li > a',就像在您的问题主题中一样。
您还在 parse_details() 中错误地拼写了“newPrice”,这会在您修复 urls 选择器后冒泡。
推荐阅读
- c++ - c++ std::bind 函数内
- angular - 如何在 Angular 和 Jasmine 中对退订进行单元测试?
- jquery - 在 touchmove 上禁用 jquery-chosen 以启用页面滚动
- android - 根据字符串长度计数计算ems值
- python - Pyodbc 运行保存的访问查询
- reactjs - React .- JSX 中的 reduce() 不渲染
- c# - 如何防止C#强制excel文件以只读方式打开?
- sql - 循环依赖 - 表插入错误
- grails - Grails GORM:在 beforeUpdate 上更新关联对象的属性未持久化
- java - Weblogic Server 启动期间 JVM 崩溃和巨大的错误日志