Web scraping 使用Scrapy刮取数据时数据重复
python 我正在使用scrapy从一个网站上刮取数据,在那里我想刮取图形卡的标题、价格以及它们是否有库存。问题是我的代码循环了两次,我得到的不是10产品,而是20Web scraping 使用Scrapy刮取数据时数据重复,web-scraping,scrapy,duplicates,Web Scraping,Scrapy,Duplicates,python 我正在使用scrapy从一个网站上刮取数据,在那里我想刮取图形卡的标题、价格以及它们是否有库存。问题是我的代码循环了两次,我得到的不是10产品,而是20 import scrapy class ThespiderSpider(scrapy.Spider): name = 'Thespider' start_urls = ['https://www.czone.com.pk/graphic-cards-pakistan-ppt.154.aspx?page=2
import scrapy
class ThespiderSpider(scrapy.Spider):
name = 'Thespider'
start_urls = ['https://www.czone.com.pk/graphic-cards-pakistan-ppt.154.aspx?page=2']
def parse(self, response):
data = {}
cards = response.css('div.row')
for card in cards:
for c in card.css('div.product'):
data['Title'] = c.css('h4 a::text').getall()
data['Price'] = c.css('div.price span::text').getall()
data['Stock'] = c.css('div.product-stock span.product-data::text').getall()
yield data
你正在做一个嵌套的for循环,而这个循环是不必要的 CSS选择器
response.CSS('div.product')
代码示例
补充资料
- 使用
而不是get()
。您得到的输出是一个列表,您可能需要getall()
提供的字符串get()
- 如果您考虑多个页面,那么一个条目字典可能比生成一个字典要好。总是会有你需要修改的东西,而条目字典给了你更大的灵活性
def parse(self, response):
data = {}
cards = response.css('div.product')
for card in cards:
data['Title'] = card.css('h4 a::text').getall()
data['Price'] = card.css('div.price span::text').getall()
data['Stock'] = card.css('div.product-stock span.product-data::text').getall()
yield data