请选择 进入手机版 | 继续访问电脑版
查看: 3715|回复: 0

python

[复制链接]

70

主题

72

帖子

388

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
388
发表于 2020-4-13 22:08:31 | 显示全部楼层 |阅读模式
总体采集思想如下:【设定基础参数】--》【请求网址】--》【处理返回数据】--》【根据数据结构,获取核心数据】--》【将核心数据导入爬取命令】--》【依次爬取下载至设定路径】--》完成!





import requests
import urllib
import json
import jsonpath
import datetime
import os
#导入模块库,类似各种工具,有些是Python系统自带的,有些需要另外安装,在cmd命令行下
# pip install <模块库名称> 即可自动下载安装,之后再代码里 import 就可以调用了。

dayTime = datetime.datetime.now().strftime('%m%d')
hourTime = datetime.datetime.now().strftime('%H%M%S')
#根据系统时间定义时间戳,作用是利用时间戳来命名保存文件夹
dirs = './学习资料/' str(dayTime) '/'
filename0 = str(dayTime)
#定义图片最终输出保存路径
if not os.path.exists(dirs):# 判断文件夹是否已存在,否则创建路径
    os.makedirs(dirs)

url = 'https://iien.cn/api/buyingshow/api'
#采集地址,这是个典型的json接口,如果换其他网址,下列的代码也需要相应调整
ex_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
#模拟浏览器请求数据,因为有些服务器地址只针对浏览器的请求,其他的请求不返回数据
qq = requests.get( url, headers=ex_headers ).text
#请求得到text文本格式
ss = json.loads(qq)
#将text 文本格式转为json格式(树形目录格式)
sss = jsonpath.jsonpath(ss,'$..data
  • .pics
  • .path')
    #查询data分支下,  所有包含pics分支的对象,获取该对象内path对应的值(图片的url)
    names = jsonpath.jsonpath(ss,'$..data
  • .title')
    #和上条语法相同,只是查询的 每组图片的标题

    for i in sss:
        urllib.request.urlretrieve(i,dirs filename0 i[-20:])
    #sss 是获取的所有图片url 列表集合,再次依次请求下载sss内所有url
    #i--每条url , dirs filename0--开头定义过的保存路径,i[-20:]--url地址倒数20位字符作为图片名。

    for var in names:
        print ('采集','【',var,'】','成功')#输出下载集合名
    print('共下载',len(sss),'张')#查询总下载张数
    #最后三行作用就是 输出采集状态,共有几个图片集合和总数多少张。
    #最终,图片保存在【 根目录/学习资料/'0411'/地址后20位.jpg】
    这是代码的截图,为了大家缩进不出错。
    MxKrO6.png

  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表