使用python异步爬取淘宝大量商品的价格,并生成excel文件
一个很简单的爬虫,但是由于request库不支持协程,如果要爬取多个页面的商品,会耗费大量的时间在同步网页请求上,简直就是龟速。
但是呢,官方专门提供了一个aiohttp库,用来实现异步网页请求等功能,可以看作异步版的requests库,需要我们手动安装。命令行输入pip install aiohttp
安装。
在编写代码之前,我们需要先获得user-agent和cookie。先打开浏览器访问淘宝网,然后按 f12 进入开发者模式,如果什么也没有就按 f5 刷新一下,
点击后,会看到cookie,再往下会看到user-agent。
把他们复制下来,没有cookie和user-agent爬虫就无法爬取信息。
import aiohttp
import re
import asyncio
sem=asyncio.Semaphore(10)#信号量,控制协程数,防止爬的过快
header={"user-agent":"","Cookie":''}#header字典的value为刚刚复制的的user-agent和cookieasync def getExcel(url,header):async with sem:async with aiohttp.ClientSession() as session:async with session.request('GET',url,headers=header) as result:try:info=[]#定义一个列表,用于存储商品名称和价格text=await result.text()#异步获得页面信息GoodsNames=re.findall(r'\"raw_title\"\:\".*?\"',text)#使用正则表达式获取页面的商品名GoodsPrices=re.findall(r'\"view_price\"\:\"[\d\.]*\"',text)#使用正则表达式获取页面商品的价格#将该页面的商品名称和价格保存到info列表中for i in range(len(GoodsNames)):try:GoodsName=eval(GoodsNames[i].split(':')[1])GoodsPrice=eval(GoodsPrices[i].split(':')[1])info.append([GoodsName,GoodsPrice])except:info.append(['',''])except:pass#将保存有商品信息的info列表写入csv文件,注意文件的打开模式一定要为'a',否则下一页面输入文件的新内容将覆盖本页面输入文件的内容。f=open('goods_info.csv','a',encoding='utf-8')for every in info:f.write(','.join(every)+'\n')def main(header):goods=input('请输入想检索的商品:')num=eval(input('请输入想检索的页面数:'))start_url='https://s.taobao.com/search?q=' + goodsurl_lst=[]#生成要爬取的多个页面的url列表for i in range(num):url_lst.append(start_url+'&s='+str(44*i)) loop=asyncio.get_event_loop()#获取事件循环tasks=[getExcel(url,header) for url in url_lst]#生成任务列表loop.run_until_complete(asyncio.wait(tasks))#激活协程if __name__=='__main__':main(header)
注意:
1、写入文件时在f.open()里要用‘a’,如果用的是‘w’那么循环写入时旧的内容会被新写入的覆盖掉。
2、开头的header字典要添加进去user-agent和cookie的value,否则无法爬取任何信息。
编译执行,输入想要爬取的商品和 想要爬取多少页,运行。
请输入想检索的商品:羽绒服
请输入想检索的页面数:100
运行完毕会在.py文件的同一目录下生成一个csv文件,可以用excel打开。
只要短短十几秒,就可以爬取到几千个同类商品的价格,比单纯的request库效率不知道高了多少。如果有需要也可以增加功能,同时爬取销量、发货地点等信息。
使用python异步爬取淘宝大量商品的价格,并生成excel文件相关推荐
- python +selenium 爬取淘宝网商品信息
前几天用python爬取豆瓣关于电影<长城>的影评,发现豆瓣的网页是静态的,心中一阵窃喜.以为对于动态网页了解的不是太多.但是主要是用cookie加headers爬取的.效果还不错,爬取了 ...
- python定向爬取淘宝中商品的名称和价格
一.思路: (1)目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格 (2)理解: 淘宝的搜索接口 翻页的处理 (3)技术路线:requests库.re库 二.代码实现: 说明:本文爬取的是淘宝中 ...
- 简单使用Python爬虫爬取淘宝网页商品信息
最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...
- Python requests爬取淘宝商品信息
作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...
- Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26
Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...
- python使用requests库爬取淘宝指定商品信息
python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...
- 用Python爬取淘宝网商品信息
用Python爬取淘宝网商品信息 转载请注明出处 网购时经常会用到淘宝网 点我去淘宝但淘宝网上的商品琳琅满目,于是我参照中国大学 MOOC的代码写了一个爬取淘宝网商品信息的程序 代码如下: impor ...
- 网络爬虫爬取淘宝页面商品信息
网络爬虫爬取淘宝页面商品信息 最近在MOOC上看嵩老师的网络爬虫课程,按照老师的写法并不能进行爬取,遇到了一个问题,就是关于如何"绕开"淘宝登录界面,正确的爬取相关信息.通过百度找 ...
- 爬取淘宝任意商品数据,你上你也行
文章目录 构造url 分析页面结构 爬取多页数据 最后 构造url 第一页url https://s.taobao.com/search?q="面膜" 第二页url https:/ ...
最新文章
- mysql5.7.20安装红黑_Window环境安装MySQLServer5.7.21
- DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
- NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
- 几个常用的宏:likely和unlikely __raw_writel
- flink sql planner到底是干嘛用的
- 《Leetcode》目录
- 关于Unity中UI中的Image节点以及它的Image组件
- 前端切换视图_前端架构 101(五):从 Flux 进化到 Model-View-Presenter
- 配置多台三层交换VLAN间相互通信
- BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
- 魅族黄章坐不住了:下一代旗舰堆料足 主打性价比
- vdbench和fio
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。剑指Offer(32)
- 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
- TLR4助力攻克脑血管难题 | MedChemExpress
- 如果你35岁恐慌了,那你真的该反思自己了···
- 微信小程序 音乐播放代码(播放方式,歌词滚动) (更新优化版:添加文字颜色过渡)
- 吐血整理出来的大数据知识点,你掌握多少?
- 文献阅读—A detection algorithm for cherry fruits based on the improved YOLO-v4 model
- 介绍一下3D游戏开发的简单常识,以及最终幻想13游戏流程为什么会过于线性的原因。