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' # 爬取页面的数据
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)
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] # 拼接字符串
# 合并为字典,方便保存文件
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).text
  list_html = etree.HTML(res_list)
  # print(html_erJi) 解析每个分类的链接
  weiYe = 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).text
    res3 =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).content
        houZui = 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爬虫实战之智能翻页批量下载文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python无头爬虫下载文件的实现

    有些页面并不能直接用requests获取到内容,会动态执行一些js代码生成内容.这个文章主要是对付那些特殊页面的,比如必须要进行js调用才能下载的情况. 安装chrome wget [https://dl.google.com/linux/direct/google-chrome-stable\_current\_x86\_64.rpm](https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm) yum

  • python 下载文件的多种方法汇总

    本文档介绍了 Python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件. Requests 使用 Requests 模块的 get 方法从一个 url 上下载文件,在 python 爬虫中经常使用它下载简单的网页内容 import requests # 图片来自bing.com url = 'https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg' def requests_downloa

  • python 下载文件的几种方法汇总

    前言 使用脚本进行下载的需求很常见,可以是常规文件.web页面.Amazon S3和其他资源.Python 提供了很多模块从 web 下载文件.下面介绍 一.使用 requests requests 模块是模仿网页请求的形式从一个URL下载文件 示例代码: import requests url = 'xxxxxxxx' # 目标下载链接 r = requests.get(url) # 发送请求 # 保存 with open ('r.txt', 'rb') as f: f.write(r.con

  • Python根据URL地址下载文件并保存至对应目录的实现

    引言 在编程中经常会遇到图片等数据集将图片等数据以URL形式存储在txt文档中,为便于后续的分析,需要将其下载下来,并按照文件夹分类存储.本文以Github中Alexander Kim提供的图片分类数据集为例,下载其提供的图片样本并分类保存 Python 3.6.5,Anaconda, VSCode 1. 下载数据集文件 建立项目文件夹,下载上述Github项目中的raw_data文件夹,并保存至项目目录中.  2. 获取样本文件位置 编写get_doc_path.py,根据根目录位置,获取目录

  • python实现从ftp上下载文件的实例方法

    python从ftp上下载文件的方法: 首先导入ftp模块: 然后使用[chdir]命令切换工作路径: 再使用"self.ftp.nlst()"命令获取目录下的文件: 最后使用"self.ftp.retrbinary()"命令下载ftp文件即可. #!/usr/bin/python # coding=utf-8 import os from ftplib import FTP # 引入ftp模块 class MyFtp: ftp = FTP() def __init

  • Python生成并下载文件后端代码实例

    txt文件 生成并下载txt文件: @app.route('/download', methods=['GET']) def download(): content = "long text" response = make_response(content) response.headers["Content-Disposition"] = "attachment; filename=myfilename.txt" return respons

  • python爬虫智能翻页批量下载文件的实例详解

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

  • 对python遍历文件夹中的所有jpg文件的实例详解

    python发现文件夹下所有的jpg文件,并且安装文件排放的顺序输出 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用到三个匹配符:"*", "?", "[]"."*"匹配0个或多个字符:"?"匹配单个字符:"[]"匹配指定范围内的字符,如:[0-9]匹配数字. glob.glob 返回所有匹配的文件路

  • Python爬虫+tkinter界面实现历史天气查询的思路详解

    今天给大家分享用Python 爬虫+tkinter界面来实现历史天气查询. 一.实现效果 运行效果 运行效果如下: 二.基本思路 导入用到的库 import requests from lxml import etree import re import tkinter as tk from PIL import Image, ImageTk from xpinyin import Pinyin 1. 爬虫部分 目标url:https://lishi.tianqi.com/ 该网站提供了全国34

  • Python使用pyecharts绘制世界地图,省级地图,城市地图实例详解

    目录 1.世界地图绘制演示 ① 世界地图数据准备 ② 世界地图生成 2.省份(河北省)地图绘制演示 ① 省份地图数据准备 ② 省份地图生成 3.城市(承德市)地图绘制演示 ① 城市地图数据准备 ② 城市地图生成 1.世界地图绘制演示 先给大家看下效果图哈. ① 世界地图数据准备 地图数据如下: 因为是世界地图,所以对标的国家,我设置了 2 组,里面的数据是随机生成的. # -*- coding:utf-8 -*- # 2022-2-14 # 作者:小蓝枣 # pyecharts地图 # 需要引用

  • C语言文件复制实例详解

    C语言文件复制实例详解 文件复制,在Linux中,将生成的read.o 重新文件拷贝一份复制到ReadCopy.o中,并且更改ReadCopy.o文件的操作权限.使其能够正常运行. 实例代码: #include <stdio.h> int main(){ FILE *r_file = fopen ("read.o","rb"); FILE *w_file = fopen ("ReadCopy.o","w"); ch

  • Android local.properties 文件读取实例详解

    Android local.properties 文件读取实例详解 在Android Studio项目里面有个local.properties文件,这个文件可以放一些系统配置.比如:sdk路径.ndk路径. ndk.dir=D\:\\soft\\android-ndk-r10e sdk.dir=D\:\\soft\\SDKandroidStudio 当然我们也可以在local.properties放一些自定义的配置,比如签名文件: key.file=C\:\\work\\Key.jks keyA

  • IOS 基本文件操作实例详解

    IOS 基本文件操作实例详解 在iOS的App沙盒中,Documents和Library/Preferences都会被备份到iCloud,因此只适合放置一些记录文件,例如plist.数据库文件.缓存一般放置到Library/Caches,tmp文件夹会被系统随机清除,不适宜防止数据. [图片缓存的清除] 在使用SDWebImage时,图片被大量的缓存,有时需要获取缓存的大小以及清除缓存. 要获取缓存大小,使用SDImageCache单例的getSize方法拿到byte为单位的缓存大小,注意计算时

  • Vuejs 单文件组件实例详解

    在之前的实例中,我们都是通过 Vue.component 或者 components 属性的方式来定义组件,这种方式在很多中小规模的项目中还好,但在复杂的项目中,下面这些缺点就非常明显了: 字符串模板:缺乏高亮,书写麻烦,特别是 HTML 多行的时候,虽然可以将模板写在 html 文件中,但是侵入性太强,不利于组件解耦分离. 不支持CSS:意味着当 HTML 和 JavaScript 组件化时,CSS明显被遗漏了 没有构建步骤:限制只能使用 HTML 和 ES5 JavaScript,而不能使用

  • 对python中的float除法和整除法的实例详解

    从python2.2开始,便有两种除法运算符:"/"."//".两者最大区别在: python2.2前的版本和python2.2以后3.0以前的版本的默认情况下,"/"所做的除法是以一种两个数或者多个数出现一个浮点数结果就以浮点数的形式表示,即float除法 "//"所做的除法则不相同,"//"不管两者出现任何数,都以整除结果为准,不对小数部分进行处理,直接抛弃,也就是整除法 以下是笔者在编译器测试的数据,

  • Python爬虫实战案例之爬取喜马拉雅音频数据详解

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一起期待吧!! 这个案例的视频地址在这里 https://v.douyu.com/show/a2JEMJj3e3mMNxml 项目目标 爬取喜马拉雅音频数据 受害者地址 https://www.ximalaya.com/ 本文知识点: 1.系统分析网页性质 2.多层数据解析 3.海量音频数据保存 环境

随机推荐