文档章节

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

python玩家
 python玩家
发布于 07/24 15:33
字数 1099
阅读 21
收藏 3

今天给大家分享一个小网站的数据采集,并写到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简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

© 著作权归作者所有

共有 人打赏支持
python玩家
粉丝 11
博文 30
码字总数 27477
作品 0
太原
程序员
私信 提问
Python 练习册-题目解答参考

所有题目的链接在这里:[Python练习册-OSChina][1] 第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字 python库:大家都会说PIL,但是根据StackOverflow的建议,采用[Pillow...

NineRec
2015/01/03
0
0
使用Python爬取天猫店铺联系方式|思路与方法

1、获取商家信息 很多初创公司为了获得客户资源,通常会有大量的可拜访客户信息的需求。如果是在以前,那么可以通过查看黄页上的企业信息数据,获得企业的联系方式,从而联系上企业负责人得以...

州的先生
05/22
0
0
Python学习汇总,做数据采集的一些小技巧,干货满满

学习Python也有一段时间了,在学习过程中不断的练习学到的各类知识,做的最多的还是爬虫,也就是简单的数据采集,有采集图片(这个最多了。。。),有下载电影的,也有学习相关的比如ppt模板...

python玩家
06/30
0
0
爬虫入门教程⑧— BeautifulSoup解析豆瓣即将上映的电影信息

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 这是...

皮卡丘丶
05/11
0
0
openlava图形化监控工具openlavaMonitor

OpenLava是100%免费、开源、兼容IBM® Spectrum LSFTM的工作负载调度器,支持各种高性能计算和分析应用,在各大IC公司被广泛引用。 openlava开源免费,兼容LSF,是IC公司(尤其是中小型IC公司...

李艳青1987
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
22
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
17
0
my.ini

1

architect刘源源
今天
15
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
15
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部