Python 结果未保存在json中
我正在使用Python 结果未保存在json中,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我正在使用scrapy并运行以下脚本: import scrapy from ..items import SizeerItem from scrapy.http.request import Request class SizeerSpiderSpider(scrapy.Spider): name = 'sizeer' pg = 0 currentPg = 2 start_urls = [ 'https://sizeer.lt/moterims
scrapy
并运行以下脚本:
import scrapy
from ..items import SizeerItem
from scrapy.http.request import Request
class SizeerSpiderSpider(scrapy.Spider):
name = 'sizeer'
pg = 0
currentPg = 2
start_urls = [
'https://sizeer.lt/moterims'
]
def parse(self, response):
items = SizeerItem()
pages = response.xpath("//nav[@class='m-pagination']//span[3]/text()").extract()
pages = list(dict.fromkeys(pages))
if self.pg == 0:
pages = list(int(s) for s in pages[0].split() if s.isdigit())
self.pg = pages[0]
name = response.xpath("//div[@class='b-productList_content']//a/@href").extract()
items['name'] = list(dict.fromkeys(name))
while self.currentPg <= self.pg:
url = response.request.url + "?sort=default&limit=60&page=" + str(self.currentPg)
self.currentPg += 1
yield Request(url, callback=self.parse)
但是在那之后,我的mydata.json
是空的。这是我第一次尝试“玩”它,但我真的不明白问题出在哪里。试试这个:
注意蜘蛛的屈服和呼唤。试试这个:
请注意爬行器的屈服和调用。您还需要
屈服
您刮下的项目,以便“刮擦引擎”将它们通过管道和路径(这是您需要导出到文件的内容)
由于yield
是非阻塞的,您可以在填充它之后添加,并且该函数在以下情况下仍将yield
您的请求:
...
name = response.xpath("//div[@class='b-productList_content']//a/@href").extract()
items['name'] = list(dict.fromkeys(name))
yield items # <<< Here for example
while self.currentPg <= self.pg:
...
您还需要
生成您刮取的项目,以便Scrapy引擎将它们通过管道和路径运行(这是您需要导出到文件的内容)
由于yield
是非阻塞的,您可以在填充它之后添加,并且该函数在以下情况下仍将yield
您的请求:
...
name = response.xpath("//div[@class='b-productList_content']//a/@href").extract()
items['name'] = list(dict.fromkeys(name))
yield items # <<< Here for example
while self.currentPg <= self.pg:
...
欢迎提供支持您答案的链接;但是仅仅一个指向文档的链接不足以回答堆栈溢出问题;但仅仅一个指向文档的链接并不足以回答堆栈溢出问题。
scrapy crawl sizeer -o mydata.json