(9)Python爬虫——下载PDF

利用python读取Excel中的url链接,读取url网页内容,下载里面的pdf文件到本地。
Excel原始内容如下:
这里写图片描述

第三列的数据即url链接,是Hyperlink函数,由于python读取该Excel内容,第三列显示的是如上的文字,而不是文字指向的链接,所以我们需要对Excel做初步处理。
把hyperlink函数内的链接地址提取出来的方法:将含有hyperlink函数的超链接那一列,利用菜单栏处的数据->分列,根据“,”进行分列,然后利用替换将不要的字符全部去掉,这样就可以得到链接了。
这里写图片描述

如果文字上的超链接不是用hyperlink函数,想提取文字上的超链接,可以利用Excel的宏,按Alt+F11进行宏编辑界面,点击菜单栏上的插入->模块,把下面的代码复制粘贴,按F5即可运行,文字上的超链接将被提取放在该文字的后一列。

Sub ExtractHL()
    Dim HL As Hyperlink
    For Each HL In ActiveSheet.Hyperlinks
        HL.Range.Offset(0, 1).Value = HL.Address
    Next
End Sub

Python代码如下:

#!/usr/bin/python
#-*- coding: utf-8 -*-
import xlrd #必须事先引入读excel的包xlrd
import urllib
import urllib2
import re
filePath=u"E:/工作/公司公告-2014.xls"#excel所在路径
baseUrl='http://snap.windin.com/ns/'#网页网址首部
tarPath="f:/pdf/2014/"#保存路径
try:
    workbook = xlrd.open_workbook(filePath)#打开Excel
    sheet = workbook.sheet_by_index(0)#第一张sheet表
    nrows = sheet.nrows #总行数
    print nrows
    #遍历对应列的每一行数据
    for rownum in range(1,2):#第一行是列名,所以从1开始即第二行读起
        #print rownum#显示当前是第几行
        code=sheet.cell(rownum,1).value#第二列的数据
        codeName=code.split(".")[0]#得到证券代码
        #print codeName
        title=sheet.cell(rownum,2).value#第三列的数据
        title=title.replace(":","_")
        title=title.replace("*","")#替换不符合文件命名的字符
        link=sheet.cell(rownum,3).value#网址链接
        #print link
        fileName=tarPath+codeName+'_'+title+'_'+str(rownum)+'.pdf'#保存的文件名
        #print fileName
        #爬虫:1、获取网页源代码,2、匹配正则表达式,找到pdf的下载链接,3、下载pdf到保存路径
        request = urllib2.Request(link)
        response = urllib2.urlopen(request)
        html=response.read()#读取网页源代码
        findLink=re.compile(r'getatt\.php\?id=\d*&att_id=\d*')#链接的正则匹配
        links=re.findall(findLink,html)
        if(len(links)==0):
            print "Failed:"+str(rownum)
        else:
            for l in links:
                #print l
                url=baseUrl+l#构造pdf的链接
                urllib.urlretrieve(url,fileName)
                #print "Succeed:"+str(rownum)
                print fileName
except Exception,e:
    print str(e)
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
初级教程看:https://download.csdn.net/download/dwf1354046363/20818468 9 网络爬虫进阶之 Selenium 篇 9.1 Selenium 简介 . . . . . . . . 9.1.1 Selenium 是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.2 Selenium 特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.3 基本安装与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.4 各种浏览器驱动下载地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.5 Selenium 初试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.2 定位元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.1 基本的定位方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.2 使用 By 定位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2.3 定位一组元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.3 控制浏览器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.1 控制浏览器窗口大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.2 控制浏览器后退、前进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.3.3 模拟浏览器刷新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.4 WebDriver 中的常用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.5 设置元素等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.1 显式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.2 隐式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 9.6 多表单切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.7 多窗口切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.8 其他操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值