一个很简单的爬虫,但是由于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文件相关推荐

  1. python +selenium 爬取淘宝网商品信息

    前几天用python爬取豆瓣关于电影<长城>的影评,发现豆瓣的网页是静态的,心中一阵窃喜.以为对于动态网页了解的不是太多.但是主要是用cookie加headers爬取的.效果还不错,爬取了 ...

  2. python定向爬取淘宝中商品的名称和价格

    一.思路: (1)目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格 (2)理解: 淘宝的搜索接口 翻页的处理 (3)技术路线:requests库.re库 二.代码实现: 说明:本文爬取的是淘宝中 ...

  3. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

  4. Python requests爬取淘宝商品信息

    作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...

  5. Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26

    Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...

  6. python使用requests库爬取淘宝指定商品信息

    python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...

  7. 用Python爬取淘宝网商品信息

    用Python爬取淘宝网商品信息 转载请注明出处 网购时经常会用到淘宝网 点我去淘宝但淘宝网上的商品琳琅满目,于是我参照中国大学 MOOC的代码写了一个爬取淘宝网商品信息的程序 代码如下: impor ...

  8. 网络爬虫爬取淘宝页面商品信息

    网络爬虫爬取淘宝页面商品信息 最近在MOOC上看嵩老师的网络爬虫课程,按照老师的写法并不能进行爬取,遇到了一个问题,就是关于如何"绕开"淘宝登录界面,正确的爬取相关信息.通过百度找 ...

  9. 爬取淘宝任意商品数据,你上你也行

    文章目录 构造url 分析页面结构 爬取多页数据 最后 构造url 第一页url https://s.taobao.com/search?q="面膜" 第二页url https:/ ...

最新文章

  1. mysql5.7.20安装红黑_Window环境安装MySQLServer5.7.21
  2. DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...
  3. NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
  4. 几个常用的宏:likely和unlikely __raw_writel
  5. flink sql planner到底是干嘛用的
  6. 《Leetcode》目录
  7. 关于Unity中UI中的Image节点以及它的Image组件
  8. 前端切换视图_前端架构 101(五):从 Flux 进化到 Model-View-Presenter
  9. 配置多台三层交换VLAN间相互通信
  10. BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
  11. 魅族黄章坐不住了:下一代旗舰堆料足 主打性价比
  12. vdbench和fio
  13. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。剑指Offer(32)
  14. 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
  15. TLR4助力攻克脑血管难题 | MedChemExpress
  16. 如果你35岁恐慌了,那你真的该反思自己了···
  17. 微信小程序 音乐播放代码(播放方式,歌词滚动) (更新优化版:添加文字颜色过渡)
  18. 吐血整理出来的大数据知识点,你掌握多少?
  19. 文献阅读—A detection algorithm for cherry fruits based on the improved YOLO-v4 model
  20. 介绍一下3D游戏开发的简单常识,以及最终幻想13游戏流程为什么会过于线性的原因。

热门文章

  1. SQL之存储过程(procedure)
  2. java多线程阻塞和cpu_对于单核 cpu 而言,开多线程的目的难倒只能是为了防止阻塞么?...
  3. GoogleCamp二三事
  4. 一个收费4888元的项目,是个什么鬼?
  5. php 降级服务处理,如何实现服务降级处理
  6. 分治法基本思想(汉诺塔问题 Tower of Hanoi)
  7. 小程序教程1:初识小程序,快速搭建一个小程序项目
  8. HTML5基础智能表单
  9. 高校选课系统前端页面设计
  10. 荐几个宅男宅女常去的网站 你不得不知道的