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简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

相关文章
|
9月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
2009 2
|
8月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
8月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
9月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
822 0
|
8月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1380 68
|
10月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
400 102
|
9月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
9月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
659 6
|
9月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
605 0
|
10月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
498 0