2.6 实战天猫数据爬取

2.6 实战天猫数据爬取

主要用到的知识点

  1. 实用技巧1—多级页面的抓取-callback函数
  2. 实用技巧2—图片的抓取-
  3. 抓取过程中的常见问题—cookie的处理,cookie模拟登录
  4. 分页

1. 实用技巧1—多级页面的抓取-callback函数

 yield scrapy.Request(url=item["GOODS_URL"], meta={'item': item}, callback=self.parse_detail,dont_filter=True)

返回的是一个请求,参数为:

url为进一步处理的地址。
meta为了进一步把对象传进去
callback是指处理的函数

2. 实用技巧2—图片的抓取-

1.首先把图片地址获取

# 图片链接
            try:
                file_urls = div.xpath('div[@class="productImg-wrap"]/a[1]/img/@src|'
                                      'div[@class="productImg-wrap"]/a[1]/img/@data-ks-lazyload').extract()[0]
                item['file_urls'] = ["http:" + file_urls]
            except Exception as e:
                print("Error:",e)
                import pdb;pdb.set_trace()

2.在settings中引入引擎

# 以下三行引入默认的图片下载器,想改可以重写它
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1}
# 引入items的连接属性
IMAGES_URLS_FIELD = 'file_urls'
# 设置存入本地的地址,当前目录。
IMAGES_STORE = r'./images'

3. 抓取过程中的常见问题—cookie的处理,cookie模拟登录

自己登录后,查看cookie,把cookie里面的所有参数都输入。

 def start_requests(self):  # 循环页码,就在这个函数中实现。
        reqs = []   # 每个页面的request
        cookies = {
            'miid':'1279809970704864021',
            'thw':'cn',
            't':'7349beda1fac2771e1b07173a388c1a7',
            'cookie2':'169e58df275871365bf763a04f83945d',
            '_tb_token_':'f5836335bbbed',
            'l':'As7Ol7pcpNOglmJtnYezXP/Fnq6RuZJB',
            'isg':'AuTkU7_eYUo5n5WHgkykUP1IteI6RAjnXtEpK_4Ehq96qYZzJ431dp1BH7ZL',
            'cna':'xxqjEU4BaTMCAXLV6R/2cfxq',
            'sca':'49d5174e',
            'atpsida':'b8147f8d3acd3709988ab26d_1495089785_1',
            'aimx':'xxqjEYvEdQcCAXLV6R9iOoQn_1495089785',
            'cad':'k95WugY3Sgew+2KIuDSUxTOnySH07xok1SSfrDICn3k=0001',
            'cap':'41cf',
            '_med':'dw:1366&dh:768&pw:1366&ph:768&ist:0',
            'res':'scroll%3A1349*6611-client%3A1349*637-offset%3A1349*6611-screen%3A1366*768',
            'pnm_cku822':'043UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5Ockt%2FR3pPe0F5QndJdCI%3D%7CU2xMHDJ7G2AHYg8hAS8XIgwsAl4%2FWTVSLFZ4Lng%3D%7CVGhXd1llXGhQbVhsVm5VYF5jVGlLcEx2SHxBf0F0QH5AekF%2FQG44%7CVWldfS0RMQ01DDQUKBMzHWxSPAIrFioSKhI4Az0YLlV7LXs%3D%7CVmhIGCUFOBgkGiMXNww3CzcXKxUuFTUPNAEhHSMYIwM5BjNlMw%3D%3D%7CV25Tbk5zU2xMcEl1VWtTaUlwJg%3D%3D',
            'cq':'ccp%3D1'
        }
        for i in range(0, 2): # 代表从0到1页
            req = scrapy.Request("https://list.tmall.com/search_product.htm?spm=a220m.1000858.0.0.wH40GN&s="+str(i*60)+"&q=%C4%D0%D7%B0&sort=d&style=g&from=nanzhuang..pc_1_suggest&suggest=0_1&type=pc#J_Filter",cookies=cookies )
            reqs.append(req)
        return reqs

4. 分页

def start_requests(self):  # 循环页码,就在这个函数中实现。
        reqs = []   # 每个页面的request
        cookies = {
            'miid':'1279809970704864021',
        }
        for i in range(0, 2): # 代表从0到1页
            req = scrapy.Request("https://list.tmall.com/search_product.htm?spm=a220m.1000858.0.0.wH40GN&s="+str(i*60)+"&q=%C4%D0%D7%B0&sort=d&style=g&from=nanzhuang..pc_1_suggest&suggest=0_1&type=pc#J_Filter",cookies=cookies )
            reqs.append(req)
        return reqs

完整代码参见 :

github_xqtbox_实战天猫数据爬取

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值