吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2928|回复: 11
收起左侧

[Python 原创] 【原创源码】【python】爬取一本书

  [复制链接]
chensure 发表于 2020-2-29 23:10
本帖最后由 chensure 于 2020-2-29 23:12 编辑

目标:http://ebooks.crup.com.cn/r/46013_output/web/html5/index.html?opf=tablet/46013.xml&launchpage=http://ebooks.crup.com.cn/r/46013_output/web/46013-WMUzNZTHrzKPw8Ah2Q95z8sBvkK7n7jg-4.html
目的:把书download下来
分析:书本是由每一页jpg图片构成,httpcanary获取了图片的真实地址,然后就开始爬了
真实地址:http://ebooks.crup.com.cn/r/46013_output/web/html5/tablet/normal/eaf8ce47f46b7c0361775ce4cc306f5f_1      .jpg

最后,希望各位看官指点一下,我希望代码能再简洁一些

[Python] 纯文本查看 复制代码
import requests  # 用于获取网页
import os  # 这个是用于文件目录操作
import urllib.request
import time


def img_chuli(img_name):
    '''
        处理img的图片名字
        img小于11,目录
        img小于256,正文
        img其他,参考答案
    '''
    if img < 11:
        img_name = '0目录' + str(img)
    elif img > 10 and img < 257:
        img_name = '1正文' + str(img - 10)
    else:
        img_name = '2参考答案' + str(img - 256)
    return img_name

# #获取网页源码
for img in range(1,289):
#for img in range(1, 12):
    baseurl = 'http://ebooks.crup.com.cn/r/46013_output/web/html5/tablet/normal/eaf8ce47f46b7c0361775ce4cc306f5f_' + str(
    img) + '.jpg'
    img_name = img_chuli(img)
    if os.path.exists( str(img) +'.jpg') == False:  # 如果文件不存在,创建文件
        # print(baseurl)
        urllib.request.urlretrieve(baseurl, './' + img_name + '.jpg')
    else:
        pass
    time.sleep(2)

免费评分

参与人数 5吾爱币 +5 热心值 +5 收起 理由
sxxs2016 + 1 + 1 我很赞同!
DK强 + 1 + 1 我很赞同!
dehangling + 1 + 1 用心讨论,共获提升!
zukxu + 1 + 1 谢谢@Thanks!
520ttpj + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a1239761234 发表于 2020-2-29 23:25
28-32行可以简单一点,改成
if not os.path.exists( str(img) +'.jpg') :  # 如果文件不存在,创建文件
        # print(baseurl)
        urllib.request.urlretrieve(baseurl, './' + img_name + '.jpg')
31-32没有什么必要,可以删了
520ttpj 发表于 2020-2-29 23:16
 楼主| chensure 发表于 2020-2-29 23:33
a1239761234 发表于 2020-2-29 23:25
28-32行可以简单一点,改成
if not os.path.exists( str(img) +'.jpg') :  # 如果文件不存在,创建文件
   ...

else不要了。。谢谢
simon6902 发表于 2020-3-1 08:06
a1239761234 发表于 2020-2-29 23:25
28-32行可以简单一点,改成
if not os.path.exists( str(img) +'.jpg') :  # 如果文件不存在,创建文件
   ...

正解,不知道还有什么地方可以优化的,反正我看不出来了
风在此停止 发表于 2020-3-1 22:47
if not os.path.exists( str(img) +'.jpg') :  # 如果文件不存在,创建文件
请问为什么要加这个判断?
这个比如1.jpg一定不存在啊?
风在此停止 发表于 2020-3-1 22:50
还有楼主,你怎么从目标网址分析出真实网址的?我在目标网址按F12后就不知道怎么找了,请教。
风在此停止 发表于 2020-3-1 22:54
风在此停止 发表于 2020-3-1 22:47
if not os.path.exists( str(img) +'.jpg') :  # 如果文件不存在,创建文件
请问为什么要加这个判断?
这 ...

你是不是想写
if not os.path.exists( str(img_name) +'.jpg') :
万一出错再运行一次就可以跳过已经下载了的?
 楼主| chensure 发表于 2020-3-2 08:23
风在此停止 发表于 2020-3-1 22:50
还有楼主,你怎么从目标网址分析出真实网址的?我在目标网址按F12后就不知道怎么找了,请教。

我是抓包的。。用FD也可以。。F12应该也可以
风在此停止 发表于 2020-3-2 10:54
chensure 发表于 2020-3-2 08:23
我是抓包的。。用FD也可以。。F12应该也可以

FD是什么?怎么用?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 00:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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