**

一,整体规划:


2,要爬取的信息是:商品名称,商品价格,商品链接,店铺名称,店铺信息
(good_name, good_price, good_url, shop_name, shop_url)

二,确定网站可以被访问,相关信息可以被提取

1,打开cmd窗口。输入

Python爬虫微店销量代码 python爬取淘宝店铺信息数据_Python爬虫微店销量代码


2,紧接着输入view(response)回车

它就会自动打开那个网站,并且下面返回True

Python爬虫微店销量代码 python爬取淘宝店铺信息数据_python爬虫_02


3,看能否获得相关内容

输入response.xpath(’//[@id=“J_ItemList”]/div[1]/div/p[2]/a/text()’).extract()
注解:xpath(’//
[@id=“J_ItemList”]/div[1]/div/p[2]/a/text()’)是你要获取获取元素的xpath路径,你可以通过

**(打开网站——》按F12——》点击代码框左上角的箭号——》在网页中选择你要获取的元素——》这时代码框就会出现你选择元素的代码位置,选择它右击——》copy——》copy Xpath)**如果是想要提取内容的话,可以在后面加上 /text(),并调用提取函数extract()

Python爬虫微店销量代码 python爬取淘宝店铺信息数据_python爬虫_03


Python爬虫微店销量代码 python爬取淘宝店铺信息数据_淘宝商品爬取_04

三,编写scrapy

  1. 生成项目
    选择文件夹(你想要项目所处的文件夹),按住shift右击,选择——》在从此处打开powershell窗口。
    输入scrapy startproject tmgoods 回车(这时就建立好了一个项目)
    输入 cd tmgoods 回车(进入tmgoods这个文件夹)
    输入 scrapy genspider tmgood tmall.com(建立一个名叫tmgood的爬虫,
    并限定它爬取域为tmall.com
  2. Python爬虫微店销量代码 python爬取淘宝店铺信息数据_python爬虫_05

  3. 使用pycharm打开文件
    file——》open——》tmgoods——》ok——》this window
  4. 编辑item文件
import scrapy

 class TmgoodsItem(scrapy.Item):
 # define the fields for your item here like:
 # name = scrapy.Field()
 good_price = scrapy.Field()
 good_name = scrapy.Field()
 good_url = scrapy.Field()
 shop_name = scrapy.Field()
  1. 编辑spider文件
#-*- coding: utf-8 -*-
 import scrapy
 from tmgoods.items import TmgoodsItem
 
 class TmgoodSpider(scrapy.Spider):
     name = 'tmgood'
     allowed_domains = ['tmall.com']
     start_urls = ['https://list.tmall.com/search_product.htm?q=%C5%AE%D7%B0']
     #标记访问的个数
     count = 0

 def parse(self, response):

 TmgoodSpider.count += 1
 #这里的xpath路径不是copy得来的,你需要观察,网页中的代码结构,自己编写
 #可以百度xpath选择器的用法
 divs = response.xpath('//div[@id="J_ItemList"]/div[@class="product  "]/div')
 if not divs:
     self.log("list page error--%s" % response.url)
 #log是一个日志属性,有标记功能,这里的作用是标记url错误的页面
 for div in divs:
     item = TmgoodsItem()
     #实例化一个TmgoodsItem()对象
     #商品价格
     item['good_price'] = div.xpath('p[@class="productPrice"]/em/@title')[0].extract()
     #商品名称
     item['good_name'] = div.xpath('p[@class="productTitle"]/a/@title')[0].extract()
     #商品url
     good_url = div.xpath('p[@class="productTitle"]/a/@href')[0].extract()
     #因为有的url路径前面没有“http:”,这样就保证了使用url路径都是有效的
     item['good_url'] = good_url if "http:" in good_url else ("http:"+good_url)
     #yield的作用于return相似,这里把二级页面的url,和这个页面保存的数据返回
     #给self.parse_detail函数,继续解析
     yield scrapy.Request(url=item['good_url'], meta={"item": item},        callback=self.parse_detail, dont_filter=True)
     
     #接收上个函数的返回值,进行解析
 def parse_detail(self, response):

 div = response.xpath('//div[@class="extend"]/ul')
 if not div:
     self.log('Detail page error--%s' % response.url)
 #继承上个函数的item,并获得它的全部数据,这里可以理解成赋值(属性和数据的赋值)
 item = response.meta['item']
 div = div[0]
 item['shop_name'] = div.xpath('li[1]/div/a/text()')[0].extract()
 item['shop_url'] = div.xpath('li[1]/div/a/@href')[0].extract()
 item['company_name'] = div.xpath('li[3]/div/text()')[0].extract()
 item['company_address'] = div.xpath('li[4]/div/text()')[0].extract()
 #最终返回item(这里有所有保存的item['']数据)
 yield item
  1. 编辑setting文件
    因为淘宝在robot协议中是规定,不予许被scrapy爬取的
    如果你想爬取的话需要在setting中找到 ROBOTSTXT_OBEY = True
    改为ROBOTSTXT_OBEY = False
    这样你就不遵循robot协议了

运行代码,并将结果保存为result.csvwen文件

找到爬虫项目文件——》shift+右击——》选择打开powershell窗口——》

输入scrapy list 回车(检验有没有错误)出现爬虫的名字

输入scrapy crawl tmgood -o result.csv(运行爬虫,并open一个result.csv文件,把爬取的数据存进去)

Python爬虫微店销量代码 python爬取淘宝店铺信息数据_Python爬虫微店销量代码_06


Python爬虫微店销量代码 python爬取淘宝店铺信息数据_淘宝商品爬取_07


最后

Python爬虫微店销量代码 python爬取淘宝店铺信息数据_多级页面的爬取_08


Python爬虫微店销量代码 python爬取淘宝店铺信息数据_python爬虫_09

出现错误别灰心,这是很正常的,不出现bug才不正常呢,程序员是在不断试错中成长的,加油!