python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆为例,批量下载文件,如财务资料,他的每一份报告都是一份pdf格式的文档。以此页面为目标,下载他每个分类的文件python爬虫实战之智能翻页批量下载文件。

1、引入库

import requests
import pandas as pd
from lxml import etree
import re
import os

2、解析初始页面

baseUrl ='http://www.jkl.com.cn/cn/invest.aspx'  # 爬取页面的数据 每日免费代理ip qq群:498181893
heade ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/81.0.4044.92 Safari/537.36'
}res =requests.get(url=baseUrl,headers=heade).text
# print(res.text)
html = etree.HTML(res)
res =requests.get(url=baseUrl,headers=heade).text   #   设置变量接受 基础页的响应数据
# print(res.text)每日免费代理ip qq群:498181893
html = etree.HTML(res)

3、获得投资关系的分类名称和url地址

data_name = html.xpath('//div[@class="infoLis"]//a/text()') # 投资者列表的名字
data_link = html.xpath('//div[@class="infoLis"]//@href')    # 全部列表的链接
name = [data_name.strip() for data_name in data_name]   # 通过for循环去掉空字符
link = ['http://www.jkl.com.cn/cn/'+ data_link for data_link in data_link]  # 拼接字符串
# 合并为字典,方便保存文件 每日免费代理ip qq群:498181893
file = dict(zip(name,link))

4、每个列表信息,保存一个文件夹
for name,link in file.items():
name=name.replace(’/’,’.’)
name=name.replace(’…’,‘报表’)
# 上面的把文件名带特许字符的 强制转换为我们想要的文本类型
path = ‘E:/’+ name
if not os.path.exists(path):
os.mkdir(path)
#建立储存位置
5、对列表的每个项目链接进行解析,拿到尾页

  res_list = requests.get(url = link, headers = heade).textlist_html = etree.HTML(res_list)# print(html_erJi) 解析每个分类的链接   每日免费代理ip qq群:498181893weiYe = list_html.xpath('//a[text()="尾页"]/@href')# print(html_weiye)# 拿到尾页信息if weiYe !=[]:# 正则提取尾页信息get_weiYe =re.search("(\d+)'\)",html_weiye[0])get_yeMa = get_html_weiYe.group(1)else:get_yeMa=1# print(get_html_yeMa)  看看是不是提取成功

6、获取每个列表信息下的文件名和文件链接

 for get_yeMa in range(1,int(get_yeMa)+1): # 翻页yaMa= {'__EVENTTARGET': 'AspNetPager1','__EVENTARGUMENT': get_yeMa}get_lei_html = requests.get(url = link, headers = heade, params = yaMa).textres3 =etree.HTML(get_lei_html)# print(res3)pdf_name = res3.xpath('//div[@class="newsLis"]//li/a/text()')# print(pdf_name)pdf_url = res3.xpath('//div[@class="newsLis"]//li//@href')

7、让文件名和文件链接处理为列表,保存后下载

pdf_names = [pdf_name.strip() for pdf_name in pdf_name]# print(pdf_names)if all(pdf_url):pdf_urls = ['http://www.jkl.com.cn'+pdf_url for pdf_url in pdf_url]# print(pdf_url)pdf_data=dict(zip(pdf_names,pdf_urls))   # pdf地址和名字整合为字典for pdfName,pdfUrl in pdf_data.items():pdfName =pdfName.replace('/','.')res_pdf= requests.get(url =pdfUrl,headers=heade).contenthouZui = pdfUrl.split('.')[-1]pdf_pash = path + '/' + pdfName + '.'+ houZui    # # print(pdf_pash)with open(pdf_pash,'wb') as f:f.write(res_pdf)print(pdfName,'下载成功')
文章部分内容源于网络,联系侵删*

python实战!智能翻页批量下载文件相关推荐

  1. python网上批量下载表格_python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  2. python批量下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  3. python批量下载网页文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  4. 如何用python批量下载数据_Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  5. python 下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  6. python 批量下载 代码_python 批量下载文件

    有时候看到好看的视频就想保存到本地,但是有的网站视频都是分段的,先去请求一个文件列表,再按照列表去拼接请求分段视频. 就类似这样:(这是开讲了某期的视频请求列表 http://hls.cntv.mya ...

  7. Python requests下载超大文件/批量下载文件

    (一)下载超大文件: 使用 python 下载超大文件,直接全部下载,文件过大,可能会造成内存不足,这时候要使用 requests 的 stream 模式 主要代码如下 iter_content:一块 ...

  8. python 根据 url 批量下载文件到本地

    需求说明 将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构. 一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可. 该方案缺点:压缩后的压缩包 ...

  9. java代码批量下载_Java代码实战:线程池实现批量下载文件

    今天技术之家陪你一起Java代码实战:线程池实现批量下载文件: 1 创建线程池package com.cheng.webb.thread; import java.util.concurrent.Ar ...

最新文章

  1. 苹果地图副总裁_也许,苹果汽车的到来只是早晚问题
  2. anacoda的spyder在调用matplotlib的时候无法显示动画效果【学习笔记】
  3. Old News PDC2003
  4. 理解离散傅立叶变换(三.复数)
  5. 如何侦听网线数据_网络工程师 | 七类网线水晶头又如何制作?
  6. Python自学----- while if 列表结合,购物车程序
  7. 孩子们的游戏(圆圈中最后剩下的数)(Python)
  8. 笔记-JavaScript高级程序设计-第六章思维导图
  9. 怎么备考2022年改革后的PMP考试?
  10. 【io】io等待为什么引发cpu过高?
  11. 19.数学与经济管理
  12. python基础ppt_Python入门之你必须了解的基础知识
  13. 数据可视化学习(一)——折线图和散点图
  14. 时间同步,自动驾驶里的花好月圆
  15. pythonttf字体反爬虫_利用Python采集起点中文网小说,并解决字体反爬的问题
  16. 互联网产品类型与产品工具
  17. 2021-2027全球及中国泳池水监测设备行业研究及十四五规划分析报告
  18. 如何委婉的发短信拒绝老师的offer
  19. 焊接件技术要求怎么写_不锈钢焊接技术要求怎么写哇?
  20. 2016微信公开课·张小龙演讲全文(上)

热门文章

  1. NDK OpenGL ES 3.0 开发(一):绘制一个三角形
  2. 优秀的工程师该具备什么能力?
  3. 银河麒麟文件夹命令行窗口最小化最大化关闭按钮消失
  4. win10代理设置 以及解决不能保存的情况
  5. notepad++6.5中文绿色汉化版下载
  6. 抖音seo账号矩阵优化霸屏系统独立源码技术开发搭建
  7. pg常用工具之pg_waldump
  8. Feature Relevance Assessment for the Semantic Interpretation of 3D Point Clouds Data
  9. 合肥先进光源束测后台的初步设计
  10. 老闪创业那些事儿(64)——为什么面试不通过?