Python爬虫实战:采集淘宝商品信息并导入EXCEL表格

数据库2025-11-05 05:45:357866

文章目录

前言

一、爬虫解析淘宝URL组成 二、实战商品查看网页源码并用re库提取信息 1.查看源码2.re库提取信息 三:函数填写 四:主函数填写 五:完整代码

前言

本文简单使用python的采集requests库及re正则表达式对淘宝的商品信息(商品名称,商品价格,淘宝生产地区,信息以及销售额)进行了爬取,并导表格并最后用xlsxwriter库将信息放入Excel表格。爬虫最后的实战商品效果图如下:

提示:以下是本篇文章正文内容

一、解析淘宝URL组成

1.我们的采集第一个需求就是要输入商品名字返回对应的信息

所以我们这里随便选一个商品来观察它的URL,这里我们选择的淘宝是书包,打开网页,信息可知他的并导表格URL为:

https://s.taobao.com/search?q=%E4%B9%A6%E5%8C%85&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306

可能单单从这个url里我们看不出什么,服务器托管但是爬虫我们可以从图中看出一些端倪

我们发现q后面的参数就是我们要获取的物品的名字

2.我们第二个需求就是根据输入的数字来爬取商品的页码

所以我们来观察一下后面几页URL的组成

由此我们可以得出分页的依据是最后s的值=(44(页数-1))

二、查看网页源码并用re库提取信息

1.查看源码

这里的实战商品几个信息都是我们所需要的

2.re库提取信息

a = re.findall(r"raw_title":"(.*?)", html)    b = re.findall(r"view_price":"(.*?)", html)    c = re.findall(r"item_loc":"(.*?)", html)    d = re.findall(r"view_sales":"(.*?)", html) 

三:函数填写

这里我写了三个函数,第一个函数来获取html网页,采集代码如下:

def GetHtml(url):     r = requests.get(url,headers =headers)     r.raise_for_status()     r.encoding = r.apparent_encoding     return r 

第二个用于获取网页的URL代码如下:

def Geturls(q, x):     url = "https://s.taobao.com/search?q=" + q + "&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm" \                                                  "=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 "     urls = []     urls.append(url)     if x == 1:         return urls     for i in range(1, x ):         url = "https://s.taobao.com/search?q="+ q + "&commend=all&ssid=s5-e&search_type=item" \               "&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306" \               "&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=" + str(             i * 44)         urls.append(url)     return urls 

第三个用于获取我们需要的商品信息并写入Excel表格代码如下:

def GetxxintoExcel(html):     global count#定义一个全局变量count用于后面excel表的填写     a = re.findall(r"raw_title":"(.*?)", html)#(.*?)匹配任意字符     b = re.findall(r"view_price":"(.*?)", html)     c = re.findall(r"item_loc":"(.*?)", html)     d = re.findall(r"view_sales":"(.*?)", html)     x = []     for i in range(len(a)):         try:             x.append((a[i],b[i],c[i],d[i]))#把获取的站群服务器信息放入新的列表中         except IndexError:             break     i = 0     for i in range(len(x)):         worksheet.write(count + i + 1, 0, x[i][0])#worksheet.write方法用于写入数据,第一个数字是行位置,第二个数字是列,第三个是写入的数据信息。         worksheet.write(count + i + 1, 1, x[i][1])         worksheet.write(count + i + 1, 2, x[i][2])         worksheet.write(count + i + 1, 3, x[i][3])     count = count +len(x) #下次写入的行数是这次的长度+1     return print("已完成") 

四:主函数填写

if __name__ == "__main__":     count = 0     headers = {         "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"         ,"cookie":""#cookie 是每个人独有的,因为反爬机制的缘故,爬取太快可能到后面要重新刷新一下自己的Cookie。                 }     q = input("输入货物")     x = int(input("你想爬取几页"))     urls = Geturls(q,x)     workbook = xlsxwriter.Workbook(q+".xlsx")     worksheet = workbook.add_worksheet()     worksheet.set_column(A:A, 70)     worksheet.set_column(B:B, 20)     worksheet.set_column(C:C, 20)     worksheet.set_column(D:D, 20)     worksheet.write(A1, 名称)     worksheet.write(B1, 价格)     worksheet.write(C1, 地区)     worksheet.write(D1, 付款人数)     for url in urls:         html = GetHtml(url)         s = GetxxintoExcel(html.text)         time.sleep(5)     workbook.close()#在程序结束之前不要打开excel,excel表在当前目录下 

五:完整代码

import re import  requests import xlsxwriter import  time def GetxxintoExcel(html):     global count     a = re.findall(r"raw_title":"(.*?)", html)     b = re.findall(r"view_price":"(.*?)", html)     c = re.findall(r"item_loc":"(.*?)", html)     d = re.findall(r"view_sales":"(.*?)", html)     x = []     for i in range(len(a)):         try:             x.append((a[i],b[i],c[i],d[i]))         except IndexError:             break     i = 0     for i in range(len(x)):         worksheet.write(count + i + 1, 0, x[i][0])         worksheet.write(count + i + 1, 1, x[i][1])         worksheet.write(count + i + 1, 2, x[i][2])         worksheet.write(count + i + 1, 3, x[i][3])     count = count +len(x)     return print("已完成") def Geturls(q, x):     url = "https://s.taobao.com/search?q=" + q + "&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm" \                                                  "=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306 "     urls = []     urls.append(url)     if x == 1:         return urls     for i in range(1, x ):         url = "https://s.taobao.com/search?q="+ q + "&commend=all&ssid=s5-e&search_type=item" \               "&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306" \               "&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=" + str(             i * 44)         urls.append(url)     return urls def GetHtml(url):     r = requests.get(url,headers =headers)     r.raise_for_status()     r.encoding = r.apparent_encoding     return r if __name__ == "__main__":     count = 0     headers = {         "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"         ,"cookie":""                 }     q = input("输入货物")     x = int(input("你想爬取几页"))     urls = Geturls(q,x)     workbook = xlsxwriter.Workbook(q+".xlsx")     worksheet = workbook.add_worksheet()     worksheet.set_column(A:A, 70)     worksheet.set_column(B:B, 20)     worksheet.set_column(C:C, 20)     worksheet.set_column(D:D, 20)     worksheet.write(A1, 名称)     worksheet.write(B1, 价格)     worksheet.write(C1, 地区)     worksheet.write(D1, 付款人数)     xx = []     for url in urls:         html = GetHtml(url)         s = GetxxintoExcel(html.text)         time.sleep(5)     workbook.close() 

 【编辑推荐】

红帽开放混合云 助力企业成为数字原生企业 分析鸿蒙系统helloworld程序是如何被调用,SYS_RUN做什么事情 5G为何突然间就“不火”了? 新方向、免费信息发布网新功能:Python3.9 完整版面世了 请停止在Python中无休止使用列表
本文地址:http://www.bhae.cn/news/041f22599733.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

电脑机箱前置音频升级教程(轻松解决前置音频问题,提升音质体验)

掌握Win11系统电脑的技巧与教程(轻松学习Win11系统的使用方法,提升工作效率)

解决台式电脑显示biohd-3错误的有效方法(详细介绍biohd-3错误的原因和解决方案)

电脑办公报表制作教程(快速学会制作高效报表的步骤与技巧)

保护电脑文件安全(以电脑文件加密码错误为中心的保护策略探讨)

东芝C40-A拆机教程(掌握拆机技巧,轻松维修和升级)

《艾派平板电脑使用教程——轻松掌握高效操作》(以艾派平板电脑为例,教你如何快速上手操作)

解决电脑运行错误的方法(有效应对电脑故障,让电脑恢复正常运行)

友情链接

滇ICP备2023000592号-9