Python通过正则库爬取淘宝商品信息代码实例


Posted in Python onMarch 02, 2020

使用正则库爬取淘宝商品的商品信息,首先我们需要确定想要爬取的对象

我们在淘宝里搜索“python”,出来的结果

Python通过正则库爬取淘宝商品信息代码实例

从url连接中可以得到搜索商品的关键字是“q=”,所以我们要用的起始url为:https://s.taobao.com/search?q=python

然后翻页,经过对比发现,翻页后,变化的关键字是s,每次翻页,s便以44的倍数增长(可以数一下每页显示的商品数量,刚好是44)
所以可以根据关键字“s=”,来设置爬取的深度(爬取多少页)

右键查看源码,商品名称可能的关键字是“title”和“raw_title”,进一步多看几个商品的名称,发现选取“raw_title”比较合适;商品价格自然就是“view_price”(通过比对淘宝商品展示页面);所以商品名称和商品价格分别是以"raw_title":"名称"和"view_price":"价格",这样的键/值对的形式展示的。

# coding:utf-8

import requests
import re

goods = '水杯'
url = 'https://s.taobao.com/search?q=' + goods

r = requests.get(url=url, timeout=10)
html = r.text

tlist = re.findall(r'\"raw_title\"\:\".*?\"', html) # 正则提取商品名称
plist = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) # 正则提示商品价格

print(tlist)
print(plist)
print(type(plist)) # 正则表达式提取出的商品名称和商品价格都是以列表形式存储数据的

利用for循环,把每个商品的名称和价格组成一个列表,然后把这写列表再追加到一个大列表中:

goodlist = []
for i in range(len(tlist)):
  title = eval(tlist[i].split(':')[1]) # eval()函数简单说就是用于去掉字符串的引号
  price = eval(plist[i].split(':')[1])
  goodlist.append([title, price]) # 把每个商品的名称和价格组成一个小列表,然后把所有商品组成的列表追加到一个大列表中
  print(goodlist)

大概的思路就是这样的。

def get_html(url):
  """获取源码html"""
  try:
    r = requests.get(url=url, timeout=10)
    r.encoding = r.apparent_encoding
    return r.text
  except:
    print("获取失败")
def get_data(html, goodlist):
  """使用re库解析商品名称和价格
  tlist:商品名称列表
  plist:商品价格列表"""
  tlist = re.findall(r'\"raw_title\"\:\".*?\"', html)
  plist = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
  for i in range(len(tlist)):
    title = eval(tlist[i].split(':')[1]) # eval()函数简单说就是用于去掉字符串的引号
    price = eval(plist[i].split(':')[1])
    goodlist.append([title, price])


def write_data(list, num):
  # with open('E:/Crawler/case/taob2.txt', 'a') as data:
  #  print(list, file=data)
  for i in range(num): # num控制把爬取到的商品写进多少到文本中
    u = list[i]
    with open('E:/Crawler/case/taob.txt', 'a') as data:
      print(u, file=data)


def main():
  goods = '水杯'
  depth = 3  # 定义爬取深度,即翻页处理
  start_url = 'https://s.taobao.com/search?q=' + goods
  infoList = []
  for i in range(depth):
    try:
      url = start_url + '&s=' + str(44 * i) # 因为淘宝显示每页44个商品,第一页i=0,一次递增
      html = get_html(url)
      get_data(html, infoList)
    except:
      continue
  write_data(infoList, len(infoList))
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
python利用微信公众号实现报警功能
Jun 10 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python中json.dumps()函数的使用解析
May 17 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 #Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 #Python
Python处理mysql特殊字符的问题
Mar 02 #Python
新手入门学习python Numpy基础操作
Mar 02 #Python
python中数据库like模糊查询方式
Mar 02 #Python
python读取文件指定行内容实例讲解
Mar 02 #Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 #Python
You might like
php数组中包含中文的排序方法
2014/06/03 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
javascript动态加载二
2012/08/22 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python生成excel的实例代码
2017/11/08 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
python3实现逐字输出的方法
2019/01/23 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
期末总结的个人自我评价
2013/11/02 职场文书
教师读书活动总结
2014/05/07 职场文书
食品安全演讲稿
2014/09/01 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
初中信息技术教学反思
2016/02/16 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers