Python-使用requests库和正则表达式爬取淘宝商品信息
时间:2020-05-30
本文章向大家介绍Python-使用requests库和正则表达式爬取淘宝商品信息,主要包括Python-使用requests库和正则表达式爬取淘宝商品信息使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
〇、环境
语言版本:python 3.8.3
编辑器:IDLE(python自带)
操作系统:win10
一、需求
1、获取taobao指定商品页面中的 价格和名称,这里以书包为例子。
2、格式化输出
二、分析
1、taobao商品页面的源代码组织形式
在商品页右键查看源代码,然后根据商品价格和商品名搜索,会发现 商品名前有“raw_title”键,价格前有“view_price”键;
依此,获取本页面的html之后,我们可以很方便的用正则表达式获取想要信息。
2、障碍及其解决
淘宝的反爬虫机制,会使得未登录则不可访问,所以我们得先登录,并获取cookie
三、编码实现
0、引入需要的库
import requests
import re
#requests库是网络请求库,需要提前安装(在命令行窗口以:pip install requests)
1、获取商品页的html代码
1 def getHTMLText(url): 2 try: 3 #本header中需要有cookie和user-agent字段 4 #cookie是为了模拟登录,user-agent是为了模拟某些浏览器发起的请求 5 6 header = {'cookie':'刚刚获取的cookie复制到此','user-agent':'Mozilla/5.0'} 7 r = requests.get(url,timeout=30,headers = header) 8 r.raise_for_status() 9 r.encoding = r.apparent_encoding 10 return r.text 11 except: 12 return ""
2、处理html代码,获取商品信息
1 def parsePage(ilt,html): 2 try: 3 #使用正则表达式获取价格和商品名 4 5 plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) 6 tlt = re.findall(r'\"raw_title\"\:\".*?\"',html) 7 for i in range(len(plt)): 8 price = eval(plt[i].split(':')[1]) 9 title = eval(tlt[i].split(':')[1]) 10 ilt.append([price,title]) 11 except: 12 print("")
3、格式化打印输出
1 def printGoodsList(ilt): 2 #使用format()函数,格式话打印 3 4 tplt = "{:4}\t{:8}\t{:16}" 5 print(tplt.format("序号","价格","商品名称")) 6 count = 0 7 for g in ilt: 8 count = count+1 9 print(tplt.format(count,g[0],g[1]))
原文地址:https://www.cnblogs.com/Drajun/p/12992796.html
- 子查询的另一种方式——映射
- LNMP架构之搭建wordpress博客网站
- Nginx的各种报错总结
- 谷歌TensorFlowLite正式发布,机器学习框架向移动端大步挺进!
- ABP+AdminLTE+Bootstrap Table权限管理系统一期
- 18888元秒下的域名sdhlx.com已建站
- 锂离子电池发明人:自动驾驶汽车电池需要更加耐用
- Linux中MySQL5.6编译安装与MySQL5.7二进制安装步骤
- Nginx服务编译安装、日志功能、状态模块及访问认证模式实操
- 快速入门系列--WebAPI--03框架你值得拥有
- 快速入门系列--MVC--06视图
- 腾讯入局物业管理 欲改造传统服务?
- ExtJs学习笔记(4)_EditorGridPanel(可编辑的网格控件)
- ansible批量管理软件部署及剧本
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅析PHP 中move_uploaded_file 上传中文文件名失败
- 结束运行python的方法
- 解析Tensorflow之MNIST的使用
- 面向新手解析python Beautiful Soup基本用法
- 基于keras中的回调函数用法说明
- PHP实现读取文件夹及批量重命名文件操作示例
- Python多线程threading创建及使用方法解析
- django rest framework 过滤时间操作
- 浅谈TensorFlow之稀疏张量表示
- 解决Keras 中加入lambda层无法正常载入模型问题
- 基于python实现判断字符串是否数字算法
- Tensorflow tensor 数学运算和逻辑运算方式
- Tensorflow全局设置可见GPU编号操作
- YII框架http缓存操作示例
- 基于tf.shape(tensor)和tensor.shape()的区别说明