wushaominkk 发表于 2018-7-27 17:18

【Python】萌新跟来我入门Python爬虫(三)

本帖最后由 wushaominkk 于 2018-7-31 16:19 编辑

今天在网上找一些文档,找了好久发现该文档都是要收费的而且贵的离谱

擦,一个文档要收我35块钱,太坑了,怎么能花这冤枉钱!
Python爬虫大法搞搞阵




这个网站的文档是支持预览的
F12看源码看了下,图片是动态加载的
Network-XH调试一下
我们试着往下拉,发现没拉一页会加载一个网址



找到Query参数进行对比下发现除了img参数不同,其他都是一样的



然后将网页的URL在浏览器里面看下返回的数据

{"NextPage":"7o@o7xcocmmzkvwcNzdFX2WomykI7aFAfYKNVMTPPJYwVKlX2vVZCVR8hIYT3DARQXg_hQDZfKg=","PageCount":50,"ErrorMsg":"","PageIndex":1,"PageWidth":792,"Width":792,"Height":1120

很清晰了吧,nextPage就是下一页的图片地址

我们再来看下源码是怎么获取图片地址的


整理下逻辑我们要怎么写代码呢

1.由于是GET请求直接URL拼接打开网址下载
2.然后动态获取下一页的URL地址,继续访问下地址并下载

理清了逻辑,那么直接贴代码了:
import os
import requests
#创建文件夹
def mkdir(path):
    folder = os.path.exists(path)

    if not folder:# 判断是否存在文件夹如果不存在则创建为文件夹
      os.makedirs(path)# makedirs 创建文件时如果路径不存在会创建这个路径
      print("创建新文件夹")

      print("创建成功")
    else:
      print("该文件夹已经存在")

host = 'https://view41.book118.com//img/?img='
url = 'https://view41.book118.com/pdf/GetNextPage'

pageNumber = 1
nextPageUrl = {}
thisPageUrl = '7o@o7xcocmmzkvwcNzdFX2WomykI7aFAfYKNVMTPPJYwVKlX2vVZCdL4Ws932iPT'
img_path = "D:/photo/book/"
mkdir(img_path)
for i in range(51):
    params = {
      'f': 'QzpcT2ZmaWNlV2ViMzY1XE9mZmljZVdlYlxjYWNoZVxQREZcMTE2MTIwNTExMjgyNzEzMzIwMjEwMTQ2NTlfODgwNjRcMzEyODExNi01ODQ0ZGVkYjE5NzdlLmRvYy50ZW1w',
      'img': thisPageUrl,
      'isMobile': 'false',
      'isNet': 'true',
      'readLimit': 't2lOjHovBX@TGrxHGTQHAg==',
      'furl': 'o4j9ZG7fK97PX9vZopx9OZEQwygFDDlsYeLf@VY1ztzuFpJRcU1Zd6761HH6tDx985563CmGkGRabmnThJuAJcF@F83GdTF5n4s3kivFThYdL9gWIQEAgQ=='
    }
    # 下载当前页放到D:/photo/book文件夹里面
    # title
    title = str(i + 1)
    web = requests.get(host + thisPageUrl)
    with open(img_path + title + ".png", "wb") as html:
      html.write(web.content)
    html.close()

    print('成功下载第%d页图片,链接%s' % (pageNumber, host + thisPageUrl))
    #动态获取下一页图片URL地址
    page = requests.get(url, params).json()
    nextPageUrl = page['NextPage']
    print(nextPageUrl)

    thisPageUrl = nextPageUrl
    pageNumber = pageNumber + 1














代码随便写的比较粗糙,有兴趣的朋友可以继续优化下
看下成果


可能很多朋友说爬出来的是图片,如果要修改里面的文档怎么办呢?这就用到文字识别软件了!这里就不细说了!

【原创教程】爬百度文库文档内容
【Python】萌新跟来我入门Python爬虫(二)
【Python】萌新跟我来入门Python爬虫



dyttdem 发表于 2018-7-27 18:32

散与聚 发表于 2018-7-27 18:07
新人小白,想问下变量“path”中为什么会存在初始值“D:/photo/book/”

代码22行img_path = "D:/photo/book/"

wushaominkk 发表于 2018-7-27 18:28

散与聚 发表于 2018-7-27 18:07
新人小白,想问下变量“path”中为什么会存在初始值“D:/photo/book/”

这个是自定义的,图片保存的目录

zzzmj 发表于 2018-7-27 17:40

沙发~~ 楼主很强呀{:1_918:}

散与聚 发表于 2018-7-27 17:52

(三)终于更新了

散与聚 发表于 2018-7-27 18:07

新人小白,想问下变量“path”中为什么会存在初始值“D:/photo/book/”

hezhe0010 发表于 2018-7-27 18:29

我是菜鸟,进入跟大佬们学习学习

13169456869 发表于 2018-7-27 18:44

感谢分享

yumusb 发表于 2018-7-27 18:55

抓抓抓接口{:1_926:}

林麥蒙 发表于 2018-7-27 19:11

感谢分享
页: [1] 2
查看完整版本: 【Python】萌新跟来我入门Python爬虫(三)