如果只是把数据打印出来,还是有些不太够用,scrapy还提供了各种存储途径。
items我觉得有点像pandas里的列,名字就是列名。items文件已经写好框架只要把你需要爬取的名字加进去就好。
import scrapy
class ZdmItem(scrapy.Item):
# define the fields for your item here like:
name = scrapy.Field()
price = scrapy.Field()
# pass
然后更改spider程序。
import scrapy
from pyquery import PyQuery as pq
#导入items
from zdm.items import ZdmItem
class SmzdmCrawler(scrapy.Spider):
name = 'smzdm'
start_urls = ['https://faxian.smzdm.com/']
def parse(self, response):
res = pq(response.body)
for item in res('.feed-block-ver').items():
yield scrapy.Request(item('a').attr('href'),self.parse_detail)
def parse_detail(self,response):
res = pq(response.body)
#导入item,添加内容
zdmitem = ZdmItem()
zdmitem['name'] = res('.article_title em').eq(0).text()
zdmitem['price'] = res('.article_title span').text()
yield zdmitem
更改之处为导入item和把原本print的部分放入到item里去。
然后就可以存到json,csv等格式了。
只需要在terminal里输入
scrapy crawl smzdm -o smzdm.csv
scrapy crawl smzdm -o smzdm.json
就存好了
网友评论