前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入

项目内容:

本项目选择 淘宝商品类目:零食

   数量:一共100页,4400个零食商品

####项目环境:

系统环境:win10 64位

工具:pycharm,chrome devTools,Anaconda
####一、爬取数据
因为淘宝网是有反爬虫机制的,虽然我使用了多线程、修改headers参数,以及使用代理ip等,也考虑到我当前测试环境是使用校园网进行爬取淘宝商品信息的,学校只有一个公网ip,按照以往的经验,使用校园网做测试环境的话是不容易被封的,但仍然不能保证每次100%爬取,所以我增加了循环爬取,每次循环爬取未爬取成功的页面,直至所有的页面全部爬取成功。

淘宝商品页面上存储的商品数据是以Json格式存储的,在这里我选择用正则表达式进行解析:

代码如下:

import re
import time
import random
import requests
import pandas as pd
from retrying import retry
from concurrent.futures import ThreadPoolExecutor
'''
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
'''
start = time.clock()  # 开始计时# 请求头池
user_agent = ["Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; "".NET CLR 3.0.04506)","Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR ""2.0.50727)","Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR ""3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)","Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; "".NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)","Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR ""3.0.04506.30)","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (""Change: 287 c9dfb30)","Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6","Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0","Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 ""Safari/535.20","Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 ""Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 ""LBBROWSER","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR ""3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 ""LBBROWSER","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR ""3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR ""3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR ""3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1","Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 ""Mobile/8C148 Safari/6533.18.5","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre","Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11","Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 ""Safari/537.36",
]# 代理ip池
proxies = ['http://125.71.212.25:9000', 'http://202.109.157.47:9000', 'http://47.94.169.110:80','http://111.40.84.73:9999', 'http://114.245.221.21:8060', 'http://117.131.235.198:8060']# plist 为1-100页的URL的编号num
plist = []
for i in range(1, 101):j = 44 * (i - 1)plist.append(j)listno = plist
datatmsp = pd.DataFrame(columns=[])while True:@retry(stop_max_attempt_number=8)def network_programming(num):url = 'https://s.taobao.com/search?q=%E9%9B%B6%E9%A3%9F&imgfile=&js=1&stats_click=search_radio_tmall%3A1' \'&initiative_id=staobaoz_20190508&tab=mall&ie=utf8&sort=sale-desc&filter=reserve_price%5B%2C200%5D' \'&bcoffset=0&p4ppushleft=%2C44&s=' + str(num)random_user_agent = random.choice(user_agent)  # 从user_agent池中随机生成headersrandom_proxies = random.choice(proxies)  # 从代理ip池中随机生成proxiesweb = requests.get(url, headers={'user-agent': random_user_agent}, proxies={'http': random_proxies})web.encoding = 'utf-8'return web# 多线程def multithreading():number = listno  # 每次爬取未成功爬取的页event = []with ThreadPoolExecutor(max_workers=10) as executor:for result in executor.map(network_programming, number, chunksize=10):event.append(result)return eventheaders = {"User-Agent": "Mozilla/5.0 (WindowsNT 10.0; WOW64);Chrome/55.0.2883.87 Safari/537.36"}listpg = []event = multithreading()for i in event:json = re.findall('"auctions":(.*?),"recommendAuctions"', i.text)if len(json):table = pd.read_json(json[0])datatmsp = pd.concat([datatmsp, table], axis=0, ignore_index=True)pg = re.findall('"pageNum":(.*?),"p4pbottom_up"', i.text)[0]  # 记入每一次成功爬取的页码listpg.append(pg)# 将爬取成功的页码转为url中的num值lists = []for a in listpg:b = 44 * (int(a) - 1)lists.append(b)listn = listnolistno = []for p in listn:if p not in lists:listno.append(p)# 当未爬取页数未0时,终止循环if len(listno) == 0:breakdatatmsp.to_excel('datatmsp.xls', index=False)end = time.clock()
print("爬取完成 用时:", end - start, 's')

爬取到商品数据我是先以Excel文件的xls格式保存存储到本地上,方便调试,以下图1.1是已经爬取到的数据。

Python爬取淘宝商品信息保存到Excel相关推荐

  1. 使用python爬取淘宝商品信息

    使用python爬虫爬取淘宝商品信息 使用的模块主要有 selenium ,time , re, from selenium import webdriver import time import c ...

  2. python爬取淘宝商品信息_python爬取淘宝商品信息并加入购物车

    先说一下最终要达到的效果:谷歌浏览器登陆淘宝后,运行python项目,将任意任意淘宝商品的链接传入,并手动选择商品属性,输出其价格与剩余库存,然后选择购买数,自动加入购物车. 在开始爬取淘宝链接之前, ...

  3. python爬取淘宝商品信息并加入购物车

    先说一下最终要达到的效果:谷歌浏览器登陆淘宝后,运行python项目,将任意任意淘宝商品的链接传入,并手动选择商品属性,输出其价格与剩余库存,然后选择购买数,自动加入购物车. 在开始爬取淘宝链接之前, ...

  4. Python 爬取淘宝商品信息栏目

    一.相关知识点 1.1.Selenium Selenium是一个强大的开源Web功能测试工具系列,可进行读入测试套件.执行测试和记录测试结果,模拟真实用户操作,包括浏览页面.点击链接.输入文字.提交表 ...

  5. selenium+chromedriver爬取淘宝美食信息保存到MongoDB

    配置文件 MONGO_URL = 'localhost' MONGO_DB = 'taobao_food' MONGO_TABLE = 'products' 代码实现 from selenium im ...

  6. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  7. python+scrapy简单爬取淘宝商品信息

    python结合scrapy爬取淘宝商品信息 一.功能说明: 已实现功能: 通过scrapy接入selenium获取淘宝关键字搜索内容下的商品信息. 待扩展功能: 爬取商品中的全部其他商品信息. 二. ...

  8. python淘宝爬虫_python爬虫爬取淘宝商品信息

    本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下 import requests as req import re def getHTMLText(url): try: ...

  9. 利用Selenium爬取淘宝商品信息

    文章来源:公众号-智能化IT系统. 一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...

最新文章

  1. Windows PowerShell 2.0语言之字面类型系统
  2. 16~40K | 星猿哲科技招聘3D视觉算法工程师
  3. Linux进程间通信分类 以及 pipe的原理实现
  4. Timus 1018 树形DP
  5. java ranger rest_kafka ranger integration issuse
  6. python列表切片和推导式思维导图_Python列表推导式使用
  7. 微软 WPF 框架源码现已托管至 GitHub
  8. 粉尘防爆设备-尘密性设备
  9. 洛谷P1217回文质数(特判筛选,取巧判断顺序)
  10. 创业公司必备,20个提升团队工作效率的工具神器
  11. Exception in thread “main“ java.lang.ArithmeticException: / by zer
  12. Js根据出生日期计算年龄
  13. 控制工程中的数学建模(8)——典型环节的数学模型(之四)
  14. PyTorch安装教程(带图文)
  15. freetype 函数介绍
  16. 知识库 wcp php,WCP
  17. 国内外日常上网必备,实用趣味网站合集
  18. python书籍排行榜2020_2020年Python文章盘点,我选出了个人TOP10
  19. cloudreve使用nginx反向代理时上传卡死或速度慢的解决办法
  20. 结构体的定义与结构体变量的定义

热门文章

  1. 苹果手机复制电话号码提示格式不正确
  2. mendeley云端容量_mendeley如何迁移数据到新电脑?
  3. Qt中调用thrift
  4. python 置信区间
  5. 软件著作权,源代码去掉注释和空行
  6. 数据结构与算法 部分题目(字符串)
  7. 全球应急机器人行业调研及趋势分析报告
  8. 纪中游记 - Day0
  9. 2020中国人工智能【语音识别】TOP20企业
  10. matlab mdh模型,6轴机器人DH建模、仿真、正逆解代码