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中xrange用法分析
Apr 15 Python
浅谈django中的认证与登录
Oct 31 Python
python测试mysql写入性能完整实例
Jan 18 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python实现每天自动签到领积分的示例代码
Aug 18 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图片上传程序
2008/03/27 PHP
php模板函数 正则实现代码
2012/10/15 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
利用jquery操作Radio方法小结
2014/10/20 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python中enumerate函数用法实例分析
2015/05/20 Python
利用Python破解斗地主残局详解
2017/06/30 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
在python中画正态分布图像的实例
2019/07/08 Python
OpenCV 模板匹配
2019/07/10 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
安全生产责任书范本
2014/04/15 职场文书
医师定期考核实施方案
2014/05/07 职场文书
广播节目策划方案
2014/05/23 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
详解如何用Python实现感知器算法
2021/06/18 Python