python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件
2019独角兽企业重金招聘Python工程师标准>>>
今天给大家分享一个小网站的数据采集,并写到excel里面!
分析网站
目标网站是“小咪购”,这里有天猫所有的含有购物券的商品信息,我们今天就来抓它吧!
随便找一段文字,然后点击右键查看网页源代码,看看是否存在该文字,如果存在,那么这个网页就是静态网站了!很幸运,这个网站居然是静态的。
那就简单了,不需要去分析ajax加载数据或者找json包了,直接获取网页源代码==>>匹配相关内容==>>保存数据即可!
工具和库
Windows+python3.6
import random
import time
import requests
from lxml import etree
import xlwt
用这几个库就可以搞定了!注意xlwt和xlrd这2个库都是操作excel的,一个是保存数据,一个是读取数据,不要搞混了。
开始写代码
首先写一个函数,将所有的爬虫工作写到函数里,如下图
这个网站需要写上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 xlwtdef 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 = 1lis = []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 += 1html_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 += 1print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>【写入本页数据完成】<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')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()
由于网站更新的很快(官方说是10分钟。。。),所以也没有抓取那么多,所有的页面有大约600多页,一页100条信息,也就是说一共有6万多条商品信息,如果不用多线程的话会很慢!
转载于:https://my.oschina.net/u/3873244/blog/1862172
python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件相关推荐
- 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)
基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...
- Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息
Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 import scrapy class Dmoz ...
- python爬虫多url_Python爬虫抓取多个URL写入本地文件
Python爬虫抓取多个URL写入本地文件!1. Pycharm中运行Scrapy windows环境下cmd中通过scrapy startproject 项目名,创建scrapy项目 修改Run-中 ...
- python读取日志错误信息_使用Python将Exception异常错误堆栈信息写入日志文件
假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging logging.basicConfig(filename='log.tx ...
- python把异常写入文件_使用Python将Exception异常错误堆栈信息写入日志文件代码
本篇文章小编给大家分享一下使用Python将Exception异常错误堆栈信息写入日志文件代码及补充知识,对大家的学习有一定的帮助,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看 ...
- 如何使用爬虫采集天猫店铺商品信息
大数据时代必备技能 - 神箭手云爬虫 -一站式云端通用爬虫开发平台 神箭手云爬虫多样化采集网页内容,快速产生大量而优质的内容. 1.打开神箭手云爬虫官网 2.创建爬虫任务 (1) 在首页点击" ...
- python简单实现网络爬虫
前言 在这一篇博客中,我会用python来实现一个简单的网络爬虫.简单的爬取一下一些音乐网站.小说网站的标题.关键字还有摘要!所以这个爬虫并不是万能爬,只针对符合特定规则的网站使用.(只使用于爬标题. ...
- python的excell库_Python中使用第三方库xlrd来写入Excel文件示例
继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...
- python 简单网页_Python爬虫 (一):爬取一个简单的静态网页
版本:python3.7 平台:windows10 工具 :pycharm 断断续续学习了py3爬虫2周左右的时间,发现自己学习的过于零散化,所以想通过这个专栏系统的整理下自己所学过的知识.如有错误, ...
最新文章
- Python 循环控制语句-break/continue
- Linux服务-FTP文件服务器部署
- 微信小程序错误监控方法谈
- 文件被后台程序占用无法删除_win10重装后系统占用50G?只要做好这2步,运行比win7还快...
- 全国计算机证件照要露耳朵吗,结婚证照片要露耳朵么 结婚登记照露一只耳朵行吗...
- django 1.8 官方文档翻译: 3-3-3 文件储存API
- Python导入标准库和扩展库对象的几种方式
- 平方根升余弦滚降滤波器matlab函数,平方根升余弦滚降数字滤波器的设计和实现.pdf...
- 最先进的语义搜索句子相似度计算
- odbc监控oracle,在zabbix下面使用ODBC 监控oracle数据库(11.2.0.3)和mysql数据库
- dotcms open source java cms_开放源Java(JSP)CMS系统的推荐源代码
- win10计算机磁盘图标,电脑win10系统磁盘分区ioc图标修改技巧
- ppspp android编译,PPSSPP模拟器通用设置,伪福利
- 段子界“鼻祖”将关闭服务,它提高了一代人的笑点
- 2017 百度之星 复赛 Valley Numer(数位dp)
- 金蝶云苍穹集成,苍穹到eas审核反审核
- 【海大838】22年考研真题及解析
- 投资欢喜传媒的B站,有着怎样的内容焦虑?
- 三度进击IPO,诚达药业为何如此执着?
- 计算机组成原理算术逻辑实验,《计算机组成原理》算术逻辑运算实验报告.doc...