scrapy 爬取京东商品列表
发布时间
阅读量:
阅读量
import scrapy
class JdSpider(scrapy.Spider):
#scrapy crawl name便是由这个name决定的
name = 'jd'
def start_requests(self):
url = 'https://www.jd.com/'
yield scrapy.Request(url=url,callback=self.parse)
def parse(self,response):
links = response.css('li.cate_menu_item a')
for link in links:
title = link.css('a::text').extract_first()
href = link.css('a::attr("href")').extract_first()
d = {
'title':title,
'href':href,
}
#哎,他大爷的,就因为一个缩进浪费了我半个小时。。。。
yield d
然后jd.json文件中文为二进制编码,为了显示为中文,不用o输出而是采用管道形式,需作一下调整,:
1、修改settings.py文件,取消掉下列代码的注释
ITEM_PIPELINES = {
'jdspider.pipelines.JdspiderPipeline': 300,
}
2、修改pipelines.py文件
import json
class JdspiderPipeline(object):
def process_item(self, item, spider):
with open('jd.json','a') as f:
json.dump(dict(item),f,ensure_ascii=False)
f.write('\n')
return item
3、最后选择文件的显示为gbk模式,如下图所示结果:
{"title": "家用电器", "href": "//jiadian.jd.com"}
{"title": "手机", "href": "//shouji.jd.com/"}
{"title": "运营商", "href": "//wt.jd.com"}
{"title": "数码", "href": "//shuma.jd.com/"}
{"title": "电脑", "href": "//diannao.jd.com/"}
{"title": "办公", "href": "//bg.jd.com"}
全部评论 (0)
还没有任何评论哟~
