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 搭建Web站点之Web服务器与Web框架
Nov 06 Python
简单谈谈python中的语句和语法
Aug 10 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
详解Python如何生成词云的方法
Jun 01 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
对python中url参数编码与解码的实例详解
Jul 25 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
python应用文件读取与登录注册功能
Sep 23 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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/12/19 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
vue+iview分页组件的封装
2020/11/17 Vue.js
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
班组长竞聘书
2014/03/31 职场文书
项目建议书怎么写
2014/05/15 职场文书
好人好事演讲稿
2014/09/01 职场文书
2014年业务工作总结
2014/11/17 职场文书
社区结对共建协议书
2016/03/23 职场文书
八年级作文之感恩
2019/11/22 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python