找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1419|回复: 0

【爬虫】利用python批量爬取人民教育出版社电子教材

[复制链接]

37

主题

153

回帖

2008

积分

用户组: 超级版主

UID
8
精华
1
威望
14 点
宅币
1761 个
贡献
24 次
宅之契约
0 份
在线时间
279 小时
注册时间
2014-1-27
发表于 2020-6-21 01:20:11 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
爬取完成:
QQ截图20200621011408.jpg

示例代码:
  1. # coding:utf-8
  2. '''
  3.     批量下载人民教育出版社电子教材(根据个人电脑环境参数设定)
  4. '''
  5. import requests
  6. import re

  7. # -- 参数设定 ------------------------------------------------------------------------------------------
  8. pageBegin = 758857                                  # 起始页码
  9. pageEnd = 758828                                    # 截止页码
  10. path = "C:\\Users\\hkcmd\\Desktop\\path\"          # 自定义桌面路径,需要事先创建path文件夹
  11. rootA = "http://old.pep.com.cn/gzsx/jszx_1/czsxtbjxzy/qrzptgjzxjc/dzkb/decxza/201008"   # 爬取Url根路径
  12. # -- 结束设定 ------------------------------------------------------------------------------------------

  13. pattern1 = re.compile("<IMG.*>", re.M)
  14. pattern2 = re.compile("/.*jpg", re.M)
  15. num = pageBegin - pageEnd + 1          # 页数
  16. rootB = "http://old.pep.com.cn"
  17. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}

  18. for i in range(num):
  19.     file = "/t20100826_" + str(pageBegin - i) + ".htm"
  20.     pageUrl = rootA + file
  21.     r = requests.get(pageUrl, headers = headers)
  22.     if r.status_code == 200:
  23.         imgStr = re.search(pattern1, r.text)
  24.         srcStr = re.search(pattern2, imgStr.group()).group()
  25.         if re.search('"', srcStr) == None:
  26.             imgUrl = rootB + srcStr
  27.         else:
  28.             srcStrx = re.search('/.*"', srcStr).group()[0:-1]
  29.             imgUrl = rootA + srcStrx
  30.         img = requests.get(imgUrl, headers = headers)
  31.         open(path + 'img' + str(i) + '.jpg', 'wb').write(img.content) # 将内容写入图片
  32.     else:
  33.         print(r.status_code)
  34. print("done")
复制代码
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-26 05:41 , Processed in 0.041100 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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