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 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python中将字典转换为列表的方法
Sep 21 Python
详解基于django实现的webssh简单例子
Jul 17 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Python图片的横坐标汉字实例
Dec 04 Python
Python面向对象封装操作案例详解
Dec 31 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
javascript 写类方式之十
2009/07/05 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
利用Python如何生成便签图片详解
2018/07/09 Python
深入浅析Python传值与传址
2018/07/10 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
毕业论文评语大全
2014/04/29 职场文书
销售员岗位职责
2014/06/09 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
工作证明格式范文
2015/06/15 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js