我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 913|回复: 9

爬取天猫-python

[复制链接]

该用户从未签到

61

主题

203

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖原创先锋奖

发表于 2020-4-22 17:40:03 | 显示全部楼层 |阅读模式
[/free]# -*- coding: utf-8 -*-
import requests
import json
import csv
import random
import re
from datetime import datetime
import time

class TM_producs(object):
    def __init__(self,storename):
        self.storename = storename
        self.url = 'https://{}.m.tmall.com'.format(storename)
        self.headers = {
            "user-agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 "
                         "(KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
        }
        datenum = datetime.now().strftime('%Y%m%d%H%M')
        self.filename = '{}_{}.csv'.format(self.storename, datenum)
        self.get_file()

    def get_file(self):
        '''创建一个含有标题的表格'''
        title = ['item_id','price','quantity','sold','title','totalSoldQuantity','url','img']
        with open(self.filename,'w',newline='') as f:
            writer = csv.DictWriter(f,fieldnames=title)
            writer.writeheader()
        return

    def get_totalpage(self):
        '''提取总页码数'''
        num = random.randint(83739921,87739530)
        endurl = '/shop/shop_auction_search.do?sort=s&p=1&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
        url = self.url + endurl.format(num)
        html = requests.get(url,headers=self.headers).text
        infos = re.findall('\(({.*})\)',html)[0]
        infos = json.loads(infos)
        totalpage = infos.get('total_page')
        return int(totalpage)

    def get_products(self,page):
        '''提取单页商品列表'''
        num = random.randint(83739921, 87739530)
        endurl = '/shop/shop_auction_search.do?sort=s&p={}&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
        url = self.url + endurl.format(page,num)
        html = requests.get(url, headers=self.headers).text
        infos = re.findall('\(({.*})\)', html)[0]
        infos = json.loads(infos)
        products = infos.get('items')
        title = ['item_id', 'price', 'quantity', 'sold', 'title', 'totalSoldQuantity', 'url', 'img']
        with open(self.filename, 'a', newline='') as f:
            writer = csv.DictWriter(f, fieldnames=title)
            writer.writerows(products)

    def main(self):
        '''循环爬取所有页面宝贝'''
        total_page = self.get_totalpage()
        for i in range(1,total_page+1):
            self.get_products(i)
            print('总计{}页商品,已经提取第{}页'.format(total_page,i))
            time.sleep(1+random.random())

if __name__ == '__main__':
    storename = 'uniqlo'
    tm = TM_producs(storename)
    tm.main()[free]
购买主题 本主题需向作者支付 2 枚金币 才能浏览
回复

使用道具 举报

该用户从未签到

523

主题

325

回帖

0

积分

二级逆天

微信交流群:jp-xxj1

积分
0

终身成就奖特殊贡献奖原创先锋奖金点子奖

发表于 2020-4-22 17:48:17 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-10-7 21:17
  • 签到天数: 103 天

    [LV.6]常住居民II

    49

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73180

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2020-4-23 06:17:38 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    6740

    回帖

    1280

    积分

    二级逆天

    积分
    1280

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2020-4-23 07:40:16 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    35

    回帖

    288

    积分

    PADS20200316初级班

    积分
    288

    终身成就奖

    发表于 2020-4-23 08:47:27 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    35

    回帖

    0

    积分

    一级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-4-23 08:51:00 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-8 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    60

    主题

    5331

    回帖

    1万

    积分

    PADS-181217初级班

    积分
    15973

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2020-4-23 08:51:20 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    4703

    回帖

    5

    积分

    二级逆天

    积分
    5

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2020-4-23 08:59:51 | 显示全部楼层
    感谢楼主分享资源 !!
    回复

    使用道具 举报

    该用户从未签到

    11

    主题

    553

    回帖

    216

    积分

    二级逆天

    积分
    216

    终身成就奖

    发表于 2020-4-23 09:22:24 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-30 08:48
  • 签到天数: 48 天

    [LV.5]常住居民I

    2

    主题

    1万

    回帖

    2万

    积分

    三级逆天

    积分
    20537

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2020-4-24 08:57:28 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表