python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

简介: 今天给大家分享一个小网站的数据采集,并写到excel里面!分析网站目标网站是“小咪购”,这里有天猫所有的含有购物券的商品信息,我们今天就来抓它吧!随便找一段文字,然后点击右键查看网页源代码,看看是否存在该文字,如果存在,那么这个网页就是静态网站了!很幸运,这个网站居然是静态的。

今天给大家分享一个小网站的数据采集,并写到excel里面!

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

分析网站

目标网站是“小咪购”,这里有天猫所有的含有购物券的商品信息,我们今天就来抓它吧!

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

随便找一段文字,然后点击右键查看网页源代码,看看是否存在该文字,如果存在,那么这个网页就是静态网站了!很幸运,这个网站居然是静态的。

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

那就简单了,不需要去分析ajax加载数据或者找json包了,直接获取网页源代码==>>匹配相关内容==>>保存数据即可!

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

工具和库

Windows+python3.6

import random

import time

import requests

from lxml import etree

import xlwt

用这几个库就可以搞定了!注意xlwt和xlrd这2个库都是操作excel的,一个是保存数据,一个是读取数据,不要搞混了。

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

开始写代码

首先写一个函数,将所有的爬虫工作写到函数里,如下图

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

这个网站需要写上headers,不写是抓不到数据的!新建一个列表,将爬到的相关数据写入列表,它的形式大概是这样的:【【产品信息A1,2,3……】,【产品信息B1,2,3……】……】,这么写列表是因为我们最后要将他们写如excel表格,那么列表中的每一个元素(还是列表形式)都是一行数据,方便写入!

注意第33行,列表构成的时候,用+连接会将所有列表中的元素放入一个列表,比如:【1,2,3】+【4,5】=【1,2,3,4,5】,而用append()函数则会将后面的内容作为一个元素加入列表中,比如:[1,2,3].append([4,5])=[1,2,3,[4,5]]

下来就是写入excel了,首先是新建excel表格,并写入第一行数据

wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('优惠券')
    path = 'E://python//优惠券.xls'
    head = ['序号','商品类型','商品名称','优惠券','券后价','在售价','销量','推荐理由','商品链接']
    for i in range(9):
        ws.write(0,i,head[i])

后面的数据,依次按格式写入并最后用wb.save(路径)的方式保存即可!完整代码及效果如下

import random
import time
import requests
from lxml import etree
import xlwt

def main(line = 1):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}
    url = 'http://www.hlxns.com'
    html = requests.get(url, headers=headers)
    html.encoding = 'utf-8'
    page = etree.HTML(html.text).xpath('//a[@class="item"]/text()')[-1]
    for i in range(int(line/100)+1, int(page) + 1):
        k = 1
        lis = []
        print('【开始下载】第%d页数据'%i)
        htm = requests.get(url + '/index.php?r=l&page={}'.format(str(i)), headers=headers)
        htm.encoding = 'utf-8'
        data = etree.HTML(htm.text)
        url_sps = data.xpath('//div[@class="title"]/a/@href')
        for url_sp in url_sps:#一页100条
            time.sleep(random.random()*2)
            print('      【正在下载】第%03d页第%03d条商品数据'%(i,k),end='')
            k += 1
            html_sp = requests.get(url + url_sp, headers=headers)
            html_sp.encoding = 'utf-8'
            info = etree.HTML(html_sp.text)
            title = info.xpath('//span[@class="title"]/text()')  # 产品
            summary = [x.replace('推荐理由:','') for x in  info.xpath('//span[@class="theme-color-3"]/text()')]  # 推荐理由
            category = info.xpath('//div[@class="nav-wrap"]/div/a[3]/text()')  # 类别
            now_price = info.xpath('//span[@class="now-price"]/b[2]/i/text()')  # 券后价
            old_price = info.xpath('//span[@class="org-price"]/i/text()')  # 在售价
            nums = info.xpath('//div[@class="text-wrap"]/span[2]/i/text()')  # 销量
            coupon = info.xpath('//div[@class="buy-coupon theme-color-8"]/span/b/text()')  # 优惠券
            sp_url = info.xpath('//a[@class="theme-bg-color-8"]/@href')  # 链接
            lis.append(category+title+coupon+now_price+old_price+nums+summary+sp_url)
            print('................................【下载完成】')
        print('######第%d页数据   【下载完成】'%i)
        for ii in range(len(lis)):
            lis[ii].insert(0, line)  # 添加序号
            for j in range(9):  # 列
                ws.write(line, j, lis[ii][j])
            line += 1
        print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>【写入本页数据完成】<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
        wb.save(path)
if __name__ == '__main__':
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('优惠券')
    path = 'E://python//优惠券.xls'
    head = ['序号','商品类型','商品名称','优惠券','券后价','在售价','销量','推荐理由','商品链接']
    for i in range(9):
        ws.write(0,i,head[i])
    main()

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

由于网站更新的很快(官方说是10分钟。。。),所以也没有抓取那么多,所有的页面有大约600多页,一页100条信息,也就是说一共有6万多条商品信息,如果不用多线程的话会很慢!

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

相关文章
|
8天前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
49 20
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
23天前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
100 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
20天前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
42 10
|
20天前
|
数据采集 JavaScript 前端开发
异步请求在TypeScript网络爬虫中的应用
异步请求在TypeScript网络爬虫中的应用
|
1月前
|
缓存 开发者 Python
深入探索Python中的装饰器:原理、应用与最佳实践####
本文作为技术性深度解析文章,旨在揭开Python装饰器背后的神秘面纱,通过剖析其工作原理、多样化的应用场景及实践中的最佳策略,为中高级Python开发者提供一份详尽的指南。不同于常规摘要的概括性介绍,本文摘要将直接以一段精炼的代码示例开篇,随后简要阐述文章的核心价值与读者预期收获,引领读者快速进入装饰器的世界。 ```python # 示例:一个简单的日志记录装饰器 def log_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {a
48 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###
|
1月前
|
API Python
利用python淘宝/天猫获得淘宝app商品详情原数据 API
要使用Python获取淘宝/天猫商品详情原数据,需先注册开放平台账号并实名认证,创建应用获取API权限。随后,根据API文档构建请求URL和参数,使用requests库发送请求,处理返回的商品详情数据。注意遵守平台使用规则。
|
26天前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
62 0
|
2月前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####