python3爬取淘宝信息代码分析


Posted in Python onFebruary 10, 2018
# encoding:utf-8
import re # 使用正则 匹配想要的数据
import requests # 使用requests得到网页源码

这个函数是用来得到源码

# 得到主函数传入的链接
def getHtmlText(url):
  try: # 异常处理
    # 得到你传入的URL链接 设置超时时间3秒
    r = requests.get(url, timeout=3)
    # 判断它的http状态码
    r.raise_for_status()
    # 设置它的编码 encoding是设置它的头部编码 apparent_encoding是从返回网页中分析它的编码格式
    r.encoding = r.apparent_encoding
    # 返回源代码
    return r.text
  except: # 发生异常返回空
    return ''

这个函数使用来解析你的源代码 获取你想要的数据

# 解析你的网页信息
def parsePage(ilt, html):
  # 异常处理
  try:
    # 找到书包的价格
    plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
    # 找到书包的名称
    tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)
    # 找到书包的地址
    add = re.findall(r'\"item_loc\"\:\".*?\"', html)
    # 找到书包的图片链接
    img = re.findall(r'\"pic_url\"\:\".*?\"', html)
    # 得到这个内容放入主函数中的列表
    for i in range(len(plt)):
      price = eval(plt[i].split(':')[1])
      title = eval(tlt[i].split(':')[1])
      address = eval(add[i].split(':')[1])
      imgs = eval(img[i].split(':')[1])  
      ilt.append([price, title, address, imgs])
  except: # 放生异常输出空字符串
    print('')
# 得到主函数传入的列表
def printGoodsList(ilt):
  # 每个列之间用tplt的放是隔开
  tplt = '{:4}\t{:8}\t{:16}\t{:32}'
  # 这个是整个的标题
  print(tplt.format('序号', '价格', '商品名称','地址', '图片地址'))
  count = 0 # 统计有多少的序号
  for g in ilt:
    count = count + 1 # 循环一遍加一
    print(tplt.format(count, g[0], g[1], g[2]), g[3]) # 输出你得到的数据
# 定义主函数 main
def main():
  goods = '书包' # 你要搜索的东西
  depth = 2 # 你想要得到几页的东西
  start_url = 'https://s.taobao.com/search?q=' + goods # 你搜索的网址加上你的搜索东西
  infoList = [] # 自定义的空列表用来存放你的到的数据
  for i in range(depth): # 循环你的页数
    try: # 异常处理
      url = start_url + '&s' + str(44 * i) # 得到你的网址
      html = getHtmlText(url) # 得到url传入到你要得到url的函数中
      parsePage(infoList, html) # 得到你的html源码 放入解析的网页中
    except: # 发生异常跳过
      continue
  # 把列表中的数据放入解析的函数中
  printGoodsList(infoList)
# 代码调试片段
if __name__ == '__main__':
  main() # 调用主函数

以上就是经过小编测试过的用python3爬取淘宝信息的代码,大家测试后如果还有任何不明白的地方可以在下方的留言区讨论。

Python 相关文章推荐
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
python对字典进行排序实例
Sep 25 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Pandas 合并多个Dataframe(merge,concat)的方法
Jun 08 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
Python 如何定义匿名或内联函数
Aug 01 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
Python中property属性实例解析
Feb 10 #Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 #Python
Python中协程用法代码详解
Feb 10 #Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 #Python
Django中Forms的使用代码解析
Feb 10 #Python
Python中列表与元组的乘法操作示例
Feb 10 #Python
Python程序运行原理图文解析
Feb 10 #Python
You might like
php利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python协程的用法和例子详解
2017/09/09 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
基于Python测试程序是否有错误
2020/05/16 Python
为什么python比较流行
2020/06/19 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
路政管理毕业自荐书范文
2014/02/10 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
少先队活动总结
2014/08/29 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
于丹论语心得观后感
2015/06/15 职场文书
酒店开业主持词
2015/07/02 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Oracle 触发器trigger使用案例
2022/02/24 Oracle