用python爬虫批量下载pdf

今天遇到一个任务,给一个excel文件,里面有500多个pdf文件的下载链接,需要把这些文件全部下载下来。我知道用python爬虫可以批量下载,不过之前没有接触过。今天下午找了下资料,终于成功搞定,免去了手动下载的烦恼。我参考了以下资料,这对我很有帮助:
1、廖雪峰python教程
2、用Python 爬虫批量下载PDF文档 http://blog.csdn.net/u012705410/article/details/47708031
3、用Python 爬虫爬取贴吧图片 http://blog.csdn.net/u012705410/article/details/47685417
4、Python爬虫学习系列教程 http://cuiqingcai.com/1052.html

由于我搭建的python版本是3.5,我学习了上面列举的参考文献2中的代码,这里的版本为2.7,有些语法已经不适用了。我修正了部分语法,如下:


# coding = UTF-8
# 爬取李东风PDF文档,网址:http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/index.htm

import urllib.request
import re
import os

# open the url and read
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    page.close()
    return html

# compile the regular expressions and find
# all stuff we need
def getUrl(html):
    reg = r'(?:href|HREF)="?((?:http://)?.+?\.pdf)'
    url_re = re.compile(reg)
    url_lst = url_re.findall(html.decode('gb2312'))
    return(url_lst)

def getFile(url):
    file_name = url.split('/')[-1]
    u = urllib.request.urlopen(url)
    f = open(file_name, 'wb')

    block_sz = 8192
    while True:
        buffer = u.read(block_sz)
        if not buffer:
            break

        f.write(buffer)
    f.close()
    print ("Sucessful to download" + " " + file_name)


root_url = 'http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/'

raw_url = 'http://www.math.pku.edu.cn/teachers/lidf/docs/textrick/index.htm'

html = getHtml(raw_url)
url_lst = getUrl(html)

os.mkdir('ldf_download')
os.chdir(os.path.join(os.getcwd(), 'ldf_download'))

for url in url_lst[:]:
    url = root_url + url
    getFile(url)
     
     
     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

上面这个例子是个很好的模板。当然,上面的还不适用于我的情况,我的做法是:先把地址写到了html文件中,然后对正则匹配部分做了些修改,我需要匹配的地址都是这样的,http://pm.zjsti.gov.cn/tempublicfiles/G176200001/G176200001.pdf。改进后的代码如下:


# coding = UTF-8
# 爬取自己编写的html链接中的PDF文档,网址:file:///E:/ZjuTH/Documents/pythonCode/pythontest.html

import urllib.request
import re
import os

# open the url and read
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    page.close()
    return html

# compile the regular expressions and find
# all stuff we need
def getUrl(html):
    reg = r'([A-Z]\d+)' #匹配了G176200001
    url_re = re.compile(reg)
    url_lst = url_re.findall(html.decode('UTF-8')) #返回匹配的数组
    return(url_lst)

def getFile(url):
    file_name = url.split('/')[-1]
    u = urllib.request.urlopen(url)
    f = open(file_name, 'wb')

    block_sz = 8192
    while True:
        buffer = u.read(block_sz)
        if not buffer:
            break

        f.write(buffer)
    f.close()
    print ("Sucessful to download" + " " + file_name)


root_url = 'http://pm.zjsti.gov.cn/tempublicfiles/'  #下载地址中相同的部分

raw_url = 'file:///E:/ZjuTH/Documents/pythonCode/pythontest.html'

html = getHtml(raw_url)
url_lst = getUrl(html)

os.mkdir('pdf_download')
os.chdir(os.path.join(os.getcwd(), 'pdf_download'))

for url in url_lst[:]:
    url = root_url + url+'/'+url+'.pdf'  #形成完整的下载地址
    getFile(url)
     
     
     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

这就轻松搞定啦。

文章标签: python 爬虫
个人分类: python
相关热词: 和python python和 python【】 python下 python的与
上一篇前端面试题4
下一篇重绘和重排
(".MathJax").remove();








    MathJax.Hub.Config({
            "HTML-CSS": {
                    linebreaks: { automatic: true, width: "94%container" },
                    imageFont: null
            },
            tex2jax: {
                preview: "none"
            },
            mml2jax: {
                preview: 'none'
            }
    });




    (function(){
        var btnReadmore =
(".MathJax").remove();    MathJax.Hub.Config({            "HTML-CSS": {                    linebreaks: { automatic: true, width: "94%container" },                    imageFont: null            },            tex2jax: {                preview: "none"            },            mml2jax: {                preview: 'none'            }    });    (function(){        var btnReadmore =
("#btn-readmore"); if(btnReadmore.length>0){ var winH = (window).height();vararticleBox= ( w i n d o w ) . h e i g h t ( ) ; v a r a r t i c l e B o x = ("div.article_content"); var artH = articleBox.height(); if(artH > winH*2){ articleBox.css({ 'height':winH*2+'px', 'overflow':'hidden' }) btnReadmore.click(function(){ articleBox.removeAttr("style"); $(this).parent().remove(); }) }else{ btnReadmore.parent().remove(); } } })()
发表评论
还能输入1000个字符

利用Python下载文件

利用Python下载文件也是十分方便的:小文件下载下载小文件的话考虑的因素比较少,给了链接直接下载就好了:import requests image_url = “https://www.python…

    

sinat_36246371 sinat_36246371

2017-03-16 16:32:47

阅读数:16945

# 爬取大学nlp课程的教学pdf文档课件 http://ccl.pku.edu.cn/alcourse/nlp/ import urllib.request i…

jonathanzh jonathanzh

2017-11-25 11:43:13

阅读数:2835

Python核心编程(第三版)-PDF高清晰完整中文版-CSDN下载

python核心编程第三版中文版PDF,python进阶教程,包含正则,网络编程,数据库编程,GUI,Django,爬虫,云计算假设等内容,实乃居家旅行,疯狂写码,必备良书!!!…

2018-5-26

流畅的python(中文)高清完整版PDF-CSDN下载

流畅的python 高清完整版PDF 综合评分:5 收藏(5)评论(11)举报 所需: 20 积分/C币 下载个数: 1259 开通VIP 立即下载 评论共有11条 梦在心中 2018-03-04 …

2018-5-8

女性得了静脉曲张变成蚯蚓腿怎么办?用这方法 腾高 · 顶新
var width = $("div.recommend-box").outerWidth() - 48; NEWS_FEED({ w: width, h : 90, showid : 'GNKXx7', placeholderId: "ad1", inject : 'define', define : { imagePosition : 'left', imageBorderRadius : 0, imageWidth: 120, imageHeight: 90, imageFill : 'clip', displayImage : true, displayTitle : true, titleFontSize: 20, titleFontColor: '#333', titleFontFamily : 'Microsoft Yahei', titleFontWeight: 'bold', titlePaddingTop : 0, titlePaddingRight : 0, titlePaddingBottom : 10, titlePaddingLeft : 16, displayDesc : true, descFontSize: 14, descPaddingLeft: 14, descFontColor: '#6b6b6b', descFontFamily : 'Microsoft Yahei', paddingTop : 0, paddingRight : 0, paddingBottom : 0, paddingLeft : 0, backgroundColor: '#fff', hoverColor: '#ca0c16' } })

Python爬虫下载PDF文件

requests库 def get_file_content(date,files): time = date[0:4] + date[5:7] file_name = file…

sinat_38944746 sinat_38944746

2018-01-22 10:24:07

阅读数:357

python从入门到实践(中文)pdf电子书-CSDN下载

2017-11-22 上传大小:4.91MB pythonpdf 一本不错的python入门书本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python …

2018-5-7

利用Python下载文件 - CSDN博客

如果是小文件的话,一次性下载就OK了,但是如果文件比较大的话,那么下载下来的文件….pdf” r = requests.get(file_url, stream=True) with open(“python.pdf”…

2018-7-11

Python 批量下载文件

Python 批量下载文件 模仿下载工具 突破文件数限制

LINZHENYU1996 LINZHENYU1996

2017-09-14 00:17:20

阅读数:528

python批量下载图片的三种方法

一是用微软提供的扩展库win32com来操作IE: win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到)。   二是用selenium的webdriver: …

lk8217 lk8217

2017-04-20 18:14:27

阅读数:939

流畅的python2015 PDF-CSDN下载

举报人: 被举报人: qq_15824553 举报的资源分: 5 *类型: *详细原因: 取  消 提  交 流畅的python2015 PDF 5积分 立即下载 …

2018-5-6

Python高手之路,中文高清完整版PDF-CSDN下载

Python 高手之路 pdf 高清带书签 不是文字版,但是十分清晰,完整版, Python 高手之路 pdf 高清带书签这不是一本常规意义上Python的入门书。这本书中没有Python…

2018-5-6

python实现批量下载

1. response >>> print response.text Index of /xx_alpha/6.10.10/ Index of /xx_alpha/6.10.10/ …

u011279649 u011279649

2016-10-11 18:24:11

阅读数:741

老中医说:男人多吃它,性生活时间延长5倍 优涅星娜样 · 顶新

40本python的图书打包下载-CSDN下载

Python and Pygame.pdf matplotlib入门教程.pdf OReill - Python Cookbook.chm OReill - Python Programming on Win32.chm pil-handbook.pdf Programming Python …

2018-6-6

python书籍资料打包-全部PDF-CSDN下载

压缩包包含内容:《Python_3.4.1官方教程中文版.pdf》,《python-3.6.3-docs-pdf-letter.zip》,《python核心编程.pdf》,《python入门经典-图灵图书.pdf》,《笨…

2018-5-6

var width = $("div.recommend-box").outerWidth() - 48; NEWS_FEED({ w: width, h: 90, showid: 'Afihld', placeholderId: 'a_d_feed_0', inject: 'define', define: { imagePosition: 'left', imageBorderRadius: 0, imageWidth: 120, imageHeight: 90, imageFill: 'clip', displayImage: true, displayTitle: true, titleFontSize: 20, titleFontColor: '#333', titleFontFamily: 'Microsoft Yahei', titleFontWeight: 'bold', titlePaddingTop: 0, titlePaddingRight: 0, titlePaddingBottom: 10, titlePaddingLeft: 16, displayDesc: true, descFontSize: 14, descPaddingLeft: 14, descFontColor: '#6b6b6b', descFontFamily: 'Microsoft Yahei', paddingTop: 0, paddingRight: 0, paddingBottom: 0, paddingLeft: 0, backgroundColor: '#fff', hoverColor: '#ca0c16' } })

Python批量下载apk

Python 3.6 主要库: openpyxl:对excel文件进行读、写; requests:下载文件 从excel中取出下载链接,通过requests.head(url)得到头信息,过滤…

Perfect_5b Perfect_5b

2018-01-05 15:21:29

阅读数:322

如何解决Python的文件批量下载问题

import urllib.request urllib.request.urlretrieve(url=r’http://www.cnindex.com.cn/syl/2016-03-24/c…

xlgray2012 xlgray2012

2016-03-24 19:45:23

阅读数:198

《深度学习Deep Learning with Python 2017》高清完整PDF版-CSDN…

Jason Brownlee - Deep Learning with Python 高清PDF+Code 立即下载 上传者: 向来痴SAS 时间: 2017-11-09 综合评分: 0 积分/C币:5 《深度学习Deep …

2018-5-8

python书籍资料打包-全部PDF-CSDN下载

压缩包包含内容:《Python_3.4.1官方教程中文版.pdf》,《python-3.6.3-docs-pdf-letter.zip》,《python核心编程.pdf》,《python入门经典-图灵图书.pdf》,《笨…

2018-6-26

python 批量下载文件

主要功能:登陆一个需要权限的页面,对页面进行解析下载所有列表下的文件到本地目录。#!/usr/bin/python2.7

#encoding=utf-8 import urllib2 from bs…

heymysweetheart heymysweetheart

2016-04-26 18:53:46

阅读数:962

python爬虫批量下载apk文件

2018年04月21日 2KB 下载

[Python]_[批量下载网站文件]

自己写脚本批量下载电子书

infoworld infoworld

2013-07-15 23:52:41

阅读数:5472

Python 爬虫批量下载PDF文档

之前稍微看了用Python爬虫爬取贴吧图片的文章,发现用Python爬虫确实方便。一个非常有用的东西便是自动下载网上的PDF文档。下面就来举两个例子,程序主要参考自这篇文章:http://ddswhu…

u012705410 u012705410

2015-08-16 22:20:15

阅读数:24169

批量下载所有镜像(.sh)

#!/bin/sh# This script will update all local images# See: https://github.com/yeasy/docker_practice/b…

Coder_501 Coder_501

2018-02-23 13:36:42

阅读数:103

scrolling="no">

python下载文件的三种方法

python下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块。当然你也可以利用ftplib从ftp站点下载文件。…

AaronWu2012 AaronWu2012

2016-09-17 20:35:48

阅读数:9133

Python视频批量下载

这里就拿最近很火的抖音视频为例,利用API来实现用户抖音视频的批量下载 主要用到的模块有 1、requests模块; 2、bs4模块; import requests impo…

y1175626605 y1175626605

2018-03-27 12:28:03

阅读数:872

python实现网站内部视频批量下载

一、背景 在有些时候,当我们突然在某个网站看到一个特别好的视频(比如高清MV),想把它下载下来,但突然发现,网站并没有下载链接;这个时候我们一般有几种解决办法: 使用网页插件(比如火狐浏览器的net…

SoundSlow SoundSlow

2017-04-08 15:41:16

阅读数:674

python3 批量下载网页所有图片

这是一段代码

u013894427 u013894427

2016-07-11 15:35:56

阅读数:1699

Python批量下载小工具

2013年08月05日 1KB 下载

Python和selenium下载pdf文件

今天要从国外的网站上下载一个学术会议的几百篇pdf文献,具体网址为https://www.onepetro.org/conferences/SPE/17ADIP/all?start=0&amp…

carlwu carlwu

2018-04-17 17:20:27

阅读数:276

PythonPython的urllib模块、urllib2模块进行网页下载文件

由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载。正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url…

xiaoguaihai xiaoguaihai

2014-06-30 18:36:49

阅读数:29052

没有更多推荐了,返回首页

("a.flexible-btn").click(function(){ ("a.flexible-btn").click(function(){ (this).parents('div.aside-box').removeClass('flexible-box'); $(this).remove(); })

你可能感兴趣的:(python,python,爬虫,python,和python,python和,python【】,python下,python的与)