欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python爬虫百战穿山甲

程序员文章站 2022-04-15 11:17:13
文章目录前言简单需求分析技术点代码实现前言前面两篇内嵌在“我要偷偷学Python”系列里面了,等我抽出手来就去分离出来。一直挂在别的系列下也不好,想了想,独立出来吧。简单需求分析爬取蝉妈妈上的热门商品信息。https://www.chanmama.com/技术点登录后爬取页面信息,爬取过程中涉及到页面的跳转,对数据的清洗与存储。后面的就没什么好说了,清洗与存储在第二战中展现,页面跳转,页面跳转,在讲Xpath的时候有展现,这里再做一次。登录之后爬取页面信息倒是第一次做。过了这个槛....

python爬虫百战穿山甲

前言

前面两篇内嵌在“我要偷偷学Python”系列里面了,等我抽出手来就去分离出来。

一直挂在别的系列下也不好,想了想,独立出来吧。

简单需求分析

爬取蝉妈妈上的热门商品信息。https://www.chanmama.com/
python爬虫百战穿山甲

python爬虫百战穿山甲

python爬虫百战穿山甲

技术点

登录后爬取页面信息,爬取过程中涉及到页面的跳转,对数据的清洗与存储。

后面的就没什么好说了,清洗与存储在第二战中展现,页面跳转,页面跳转,在讲Xpath的时候有展现,这里再做一次。
登录之后爬取页面信息倒是第一次做。

过了这个槛,可以玩的东西又多了很多。
广阔天地,大有可为。

这里的代码由我们“爬虫百战穿山甲”小分队里的“垍”同学独立完成

非常之强,晚上六点的时候我把需求放到群里,晚上八点他就解决了,实实在在的惊呆了我们所有人。


代码实现

来看看不同风格的代码:

import requests,time
def cook(t):#取登陆前COOKIE
    url="https://www.chanmama.com/login"
    res = requests.get(url,headers=h)  
    w = res.text.find('https://hm.baidu.com/hm.js?')+27
    c = res.text[w:w+32]
    co = {'Hm_lvt_'+c: t, 'Hm_lpvt_'+c:t}
    #print(w,c,co)
    return(co)

def login(user,password):#登陆并手动更新COOKIE
    url = "https://api-service.chanmama.com/v1/access/token"
    d = '{"appId":10000,"timeStamp":'+t+',"username":"'+user+'","password":"'+password+'"}'
    res = requests.post(url, data=d, headers=h, cookies=c)
    data = res.json()
    if data['errCode']==0:
        c['LOGIN-TOKEN-FORSNS'] = data['data']['token']
        h['Authorization'] = data['data']['token']
        print('登陆成功~~')
        return(True)
    else:
        print('登陆失败~~')
        return(False)

def pa(aa,s):#爬出源码
    url = "https://api-service.chanmama.com/v1/product/search"
    d = {"keyword":aa,"keyword_type":"","page":1,"price":"","size":s,"filter_coupon":0,"is_aweme_goods":0,"has_live":0,"has_video":0,"tb_max_commission_rate":"","day_pv_count":"","day_order_count":"","big_category":"","first_category":"","second_category":"","platform":"","sort":"day_order_count","order_by":"desc"}
    res = requests.post(url,json = d,headers=h,cookies=c)
    save(res.json())

def save(tt):#保存信息
    with open(r'在你自己的电脑上弄个文件','w+',encoding='utf-8') as fo:
        for i in tt['data']['list']:        
            print("商品:%s  价格:%s 原价:%s 昨日浏览:%s 昨日销量:%s" %(i['title'],i['price'],i['market_price'],i['day_pv_count'],i['day_order_count']))
            fo.write("商品:%s  价格:%s 原价:%s 昨日浏览:%s 昨日销量:%s\n" %(i['title'],i['price'],i['market_price'],i['day_pv_count'],i['day_order_count']))    

h = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
t = str(int(time.time()))
c = cook(t)

if login('填你的账号','填你的密码'):
    pa('商品自己选',50)#非VIP只可以取前50条
    #这里填入商品和要爬取的数据条数

python爬虫百战穿山甲

强!!!!!

本文地址:https://blog.csdn.net/qq_43762191/article/details/110522448