栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

论文材料如何用python爬虫下载?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

论文材料如何用python爬虫下载?

还记得在大学时候写论文的时候,因为写文章需要的材料比较多,如果能有很多的链接资料支撑是再好不过了。不过那时候还没有接触到python,对于数据的爬取还没有这方面的概念。既然小编和各位小伙伴们正好在学习这方面的模块,我们就一起试着用python爬虫下载链接,来比比看谁下载的数量最多吧。


步骤

1、要利用headers拉动请求,模拟成浏览器去访问网站,跳过最简单的反爬虫机制。

2、获取网页内容,保存在一个字符串content中。

3、构造正则表达式,从content中匹配关键词pattern获取下载链接。需要注意的是,网页中的关键词出现了两遍(如下图),所以我们要利用set()函数清除重复元素。

4、第三步是遍历set之后的结果,下载链接。

5、设置time.sleep(t),无sleep间隔的话,网站认定这种行为是攻击,所以我们隔一段时间下载一个,反反爬虫。

 

具体代码

import urllib.request# url request
import re            # regular expression
import os            # dirs
import time
'''
url 下载网址
pattern 正则化的匹配关键词
Directory 下载目录
'''
def BatchDownload(url,pattern,Directory):
    
    # 拉动请求,模拟成浏览器去访问网站->跳过反爬虫机制
    headers = {'User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    
    # 获取网页内容
    content = opener.open(url).read().decode('utf8')
    
    # 构造正则表达式,从content中匹配关键词pattern
    raw_hrefs = re.findall(pattern, content, 0)
    
    # set函数消除重复元素
    hset = set(raw_hrefs)
         
    # 下载链接
    for href in hset:
        # 之所以if else 是为了区别只有一个链接的特别情况
        if(len(hset)>1):
            link = url + href[0]
            filename = os.path.join(Directory, href[0])
            print("正在下载",filename)
            urllib.request.urlretrieve(link, filename)
            print("成功下载!")
        else:
            link = url +href
            filename = os.path.join(Directory, href)
            print("正在下载",filename)
            urllib.request.urlretrieve(link, filename)
            print("成功下载!")
            
        # 无sleep间隔,网站认定这种行为是攻击,反反爬虫
        time.sleep(1)
 
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(Storm-Data-Export-Format.docx)',
#              'E:stormeventscsvfiles')
        
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(Storm-Data-Export-Format.pdf)',
#              'E:stormeventscsvfiles')
        
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(StormEvents_details-ftp_v1.0_d(d*)_c(d*).csv.gz)',
#              'E:stormeventscsvfiles')
        
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(StormEvents_fatalities-ftp_v1.0_d(d*)_c(d*).csv.gz)',
#              'E:stormeventscsvfiles')
 
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(StormEvents_locations-ftp_v1.0_d(d*)_c(d*).csv.gz)',
#              'E:stormeventscsvfiles')
 
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/legacy/',
#              '(ugc_areas.csv)',
#              'E:stormeventscsvfileslegacy')
 
#BatchDownload('https://www1.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/',
#              '(ugc_areas.csv)',
#              'E:stormeventscsvfiles')


以上就是小编用python爬虫下载链接的代码了,目前已经收获了不少的网页链接,不知道小伙伴们的成果怎么样了~想要下载链接的小伙伴,也可以试试这个方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/11632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号