python爬虫文件式网站_python 爬虫获取文件式网站资源(基于python 3.6)

本文介绍了如何使用Python爬虫技术从NCO网站抓取并递归解析链接,通过BeautifulSoup库处理HTML,实现数据块的加载显示和文件下载。重点展示了get_link函数用于查找链接,Schedule函数用于进度条更新,以及如何根据链接路径进行文件存储和下载。
摘要由CSDN通过智能技术生成

import urllib.request

from bs4 import BeautifulSoup

from urllib.parse import urljoin

from Cat.findLinks import get_link

from Cat.Load import Schedule

import os

import time

import errno

-------import的其余包代码----------------

def get_link(page): # 寻找链接的href

linkData = []

for page in page.find_all(‘td‘):

links = page.select("a")

for each in links:

# if str(each.get(‘href‘))[:1] == ‘/‘: 过滤if代码

data=each.get(‘href‘)

linkData.append(data)

return(linkData)

def Schedule(a,b,c): #当数据过大,加载显示模块

‘‘‘‘‘

a:已经下载的数据块

b:数据块的大小

c:远程文件的大小

‘‘‘

per = 100.0 * a * b / c

if per > 100 :

per = 100

print(‘%.2f%%‘ % per)

----------end-------------------

def mkdir_p(path): #递归创建多级目录

try:

os.makedirs(path)

except OSError as exc: # Python >2.5 (except OSError, exc: for Python <2.5)

if exc.errno == errno.EEXIST and os.path.isdir(path):

pass

else: raise

def file_Down(connet,file):

urllib.request.urlretrieve(connet, file, Schedule)

def decice(data):

a = ‘/‘

if a in data:

return 1

def findAll(): #主函数

url=‘http://www.nco.ncep.noaa.gov/pmb/codes/nwprod/nosofs.v3.0.4/‘

page = urllib.request.urlopen(url).read()

soup = BeautifulSoup(page,‘lxml‘) #利用BeautifulSoup取得网页代码

links=get_link(soup)

# print(links)

for childLink in range(len(links)-1):

childLink =childLink +1

connet = urljoin(url, links[childLink]) #拼接网址路径

page_next = urllib.request.urlopen(connet).read()

soup_next = BeautifulSoup(page_next, ‘lxml‘)

link_next=get_link(soup_next ) #第2次链接内的

file = os.path.join(‘D:\\test\\Index‘ + "\\" + links[childLink])

# decice(links[childLink])

# file_cre=os.path.join(‘D:\\test\\Index‘ ,links[childLink])

if decice(links[childLink]):

mkdir_p(file )

else:

file_Down(connet, file)

print(connet)

for child_next in range(len(link_next)-1):

child_next =child_next +1

connet_next=urljoin(connet,link_next[child_next] )

page_next = urllib.request.urlopen(connet_next).read()

soup_nextF = BeautifulSoup(page_next , ‘lxml‘)

link_nextF = get_link(soup_nextF) # 第3次链接内的

python爬虫与项目实战,网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如: (1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3)万维网数据形的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。 网络爬虫 为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值