python实战!智能翻页批量下载文件
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实战!智能翻页批量下载文件相关推荐
- python网上批量下载表格_python爬虫智能翻页批量下载文件的实例详解
python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...
- python批量下载文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- python批量下载网页文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- 如何用python批量下载数据_Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- python 下载文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- python 批量下载 代码_python 批量下载文件
有时候看到好看的视频就想保存到本地,但是有的网站视频都是分段的,先去请求一个文件列表,再按照列表去拼接请求分段视频. 就类似这样:(这是开讲了某期的视频请求列表 http://hls.cntv.mya ...
- Python requests下载超大文件/批量下载文件
(一)下载超大文件: 使用 python 下载超大文件,直接全部下载,文件过大,可能会造成内存不足,这时候要使用 requests 的 stream 模式 主要代码如下 iter_content:一块 ...
- python 根据 url 批量下载文件到本地
需求说明 将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构. 一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可. 该方案缺点:压缩后的压缩包 ...
- java代码批量下载_Java代码实战:线程池实现批量下载文件
今天技术之家陪你一起Java代码实战:线程池实现批量下载文件: 1 创建线程池package com.cheng.webb.thread; import java.util.concurrent.Ar ...
最新文章
- 苹果地图副总裁_也许,苹果汽车的到来只是早晚问题
- anacoda的spyder在调用matplotlib的时候无法显示动画效果【学习笔记】
- Old News PDC2003
- 理解离散傅立叶变换(三.复数)
- 如何侦听网线数据_网络工程师 | 七类网线水晶头又如何制作?
- Python自学----- while if 列表结合,购物车程序
- 孩子们的游戏(圆圈中最后剩下的数)(Python)
- 笔记-JavaScript高级程序设计-第六章思维导图
- 怎么备考2022年改革后的PMP考试?
- 【io】io等待为什么引发cpu过高?
- 19.数学与经济管理
- python基础ppt_Python入门之你必须了解的基础知识
- 数据可视化学习(一)——折线图和散点图
- 时间同步,自动驾驶里的花好月圆
- pythonttf字体反爬虫_利用Python采集起点中文网小说,并解决字体反爬的问题
- 互联网产品类型与产品工具
- 2021-2027全球及中国泳池水监测设备行业研究及十四五规划分析报告
- 如何委婉的发短信拒绝老师的offer
- 焊接件技术要求怎么写_不锈钢焊接技术要求怎么写哇?
- 2016微信公开课·张小龙演讲全文(上)
热门文章
- NDK OpenGL ES 3.0 开发(一):绘制一个三角形
- 优秀的工程师该具备什么能力?
- 银河麒麟文件夹命令行窗口最小化最大化关闭按钮消失
- win10代理设置 以及解决不能保存的情况
- notepad++6.5中文绿色汉化版下载
- 抖音seo账号矩阵优化霸屏系统独立源码技术开发搭建
- pg常用工具之pg_waldump
- Feature Relevance Assessment for the Semantic Interpretation of 3D Point Clouds Data
- 合肥先进光源束测后台的初步设计
- 老闪创业那些事儿(64)——为什么面试不通过?