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中sets模块的用法实例
Sep 30 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python机器学习之决策树算法
Dec 22 Python
python3 读写文件换行符的方法
Apr 09 Python
Django添加feeds功能的示例
Aug 07 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
python str字符串转uuid实例
Mar 03 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 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堆栈与列队的学习
2013/06/21 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
js运动应用实例解析
2015/12/28 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python 正则表达式操作指南
2009/05/04 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
家长对老师的评语
2014/04/18 职场文书
企业文化宣传标语
2014/06/09 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
教师节感谢信
2015/01/22 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS