爬虫。。。

什么是网络爬虫 又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以根据指定的规则,从互联网上下载网页、图片、视频等内容,并抽取其中的有用信息进行处理。网络爬虫的工作流程包括获取网页源代码、解析网页内容、存储数据等步骤。根据其目的和工作方式的不同,网络爬虫可以分为多种类型。常见的网络爬虫包括通用爬虫、聚焦爬虫、增量式爬虫等。 阅读详情

什么是爬虫?

网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么爬虫就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据。

简单的说:就是用代码模拟人的行为,去各各网站溜达、点点按钮、查查数据。或者把看到的数据拿下来。通过有效的爬虫手段,批量采集数据。       

反爬与反反爬

反爬:有时企业不想自己的数据被别人拿到。这时就会设置反爬的手段,来不让爬虫获取数据。

反反爬:破解掉反爬手段,再获取其数据。所有的手段都有可能破解。

第一个爬虫程序

#从urlopen中获取库urllib.request
from urllib.request import urlopen 

#输入请求的网址
url = 'http://www.baidu.com'       

#发送请求
resp = urlopen(url)                

print(resp.read().decode()[:100])  
#将爬取的信息打印
#read()将网址可读
#decode()将内容转化为字符串
#[:100]只读前100个字符

urllib响应对象的使用

from urllib.request import urlopen

url = 'http://www.baidu.com'

resp = urlopen(url)

print(resp.read()[:100])

print(resp.getcode())  # 获取响应码,200表示成功
print(resp.geturl())   # 获取访问的url
print(resp.info())     # 获取响应头信息

Request对象的使用

可以使用Request库,通过里面的headers修改自己的请求头信息,用来伪装自己。

from urllib.request import urlopen
#调用库Request
from urllib.request import Request

url = 'http://httpbin.org/get'
#将字典传入变量headers
headers =  {'新头':'666' }
#封装url并修改请求头信息
req = Request(url,headers=headers)
#发送请求
resp = urlopen(req)

print(resp.read().decode())

urllib发送get请求

大部分被传输到浏览器的html,images,js,css, … 都是通过GET方法发出请求的。它是获取数据的主要方法

Get请求的参数都是在Url中体现的,如果有中文,需要转码,这时我们可使用l以下两种方法

  • urllib.parse. quote() 转换一个值
from urllib.request import urlopen,Request
#引入用与中文转码的库quote
from urllib.parse import quote

#将用于转码的中文设置为一个变量args
args = input('请输入想要搜索的内容:')

#将中文args放入网址中,开头加上f
url =   f'https://www.baidu.com/s?wd={quote(args)}'

#修改头
headers = {'User-Agent':'Mozilla'}
#使用Request将url与headers封装
req = Request(url,headers=headers)
#使用urlopen发送
resp = urlopen(req)
print(resp.read().decode()[:1500])

  • urllib.parse.urlencode() 转换键值对
from urllib.request import urlopen,Request
#引入用与中文转码的库urlencode
from urllib.parse import urlencode

#将用于转码的中文设置为一个变量args
args = input('请输入想要搜索的内容:')
#将中文args放入字典parms中
parms = {'wd':args}
#将值为中文的字典parms放入网址中
url =   f'https://www.baidu.com/s?{urlencode(parms)}'

headers = {'User-Agent':'Mozilla'}
req = Request(url,headers=headers)
resp = urlopen(req)
print(resp.read().decode()[:1500])

 喜马拉雅实战

我们将通过这次实战学会两点:

1.如何分析网页

2.使用方法,一次获取多页信息

不同的网站有不同的网址规律,打开喜马拉雅网,我们对网址开始分析

点进音乐界面,然后进入不同分类的音乐,观察网址

https://www.ximalaya.com/category/a1_b733978/

https://www.ximalaya.com/category/a2_b733978/

我们发现标红位置代表着音乐的分类

在a1类型中的音乐点击下一页我们发现

https://www.ximalaya.com/category/a1_b733978/

https://www.ximalaya.com/category/a1_b733978/p2

https://www.ximalaya.com/category/a1_b733978/p3

标红位置代表不同页数

此时我们大概完成了对网页的分析,开始写爬虫:

利用方法,设计变量p{num}替代网址中的页数部分,将num放入循环,实现一次获取多页数据

from urllib.request import Request,urlopen

def spider_Music(page):
    for num in range(1,page+1):
        if num == 1:
            url = 'https://www.ximalaya.com/category/a2_b733978/'
        else:
            url = f'https://www.ximalaya.com/category/a2_b733978/p{num}'

        #更改请求头与封装发送
        headers = {'User-Agent':'Mozilla'}
        req = Request(url,headers=headers)
        resp = urlopen(req)

        print(resp.getcode())               #获取响应码,200表示成功
        print(resp.geturl())                #获取响应网址
        print(resp.read().decode()[:100])

a = input('请输入需要查询的页数:')
spider_Music(int(a))

post请求封装多个数据

使用data可以封装多个数据,但要注意将字典data先转换为字符串,

再用encode()转换为bytes类型,因为字典不能直接被传送

from urllib.request import Request,urlopen
from urllib.parse import urlencode

url = 'https://www.kuaidaili.com/login/'

#data内放入多个数据
data = {
        'username': '15517100927',
        'password':'rr211314',
        'login_type': '1',
        }

#将数据data转换为字符串,然后通过encode转换为bytes类型
tru_data = urlencode(data).encode()
headers = {'User-Agent':'Mozilla'}

#将数据data封装
req = Request(url,data=tru_data,headers=headers)
resp = urlopen(req)
print(resp.read().decode())

动态页面数据的获取

有时在访问了请求后,并不能获取想要的数据。

很大的原因之一就是,当前的页面是动态的。

目前网络的页面分为2大类:

  • 静态页面

    • 特征:访问有UI页面URL,可以直接获取数据
  • 动态页面(AJAX)

    • 特征:访问有UI页面URL,不能获取数据。需要抓取新的请求获取数据

解决方案:

在动态页面中,选择Fetch/XHR,然后滑动滚动条,即可发现有新的动态数据产生

再次点击动态数据,即可获取网址等信息。

 请求 SSL证书验证

如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,那我们将无法访问网站,这时我们可以通过绕过验证的方式解决问题

#引入库ssl
import ssl

# 忽略SSL安全认证
context = ssl._create_unverified_context()
# 添加到context参数里
response = urlopen(request, context = context)

伪装爬虫-请求头

有些网站不会同意你使用程序直接进行访问,如果识别有问题,那么站点根本不会响应

所以为了访问,我们可以使用库fake-useragent,完全模拟浏览器的工作

首先进行fake-useragent的安装

第一步 创建虚拟环境

在终端创建虚拟环境,保持原先环境的干净

终端输入 mkvirtualenv 环境名 创建虚拟环境

点击右下角,进行环境的切换,由于是刚创建好的环境,需要刷新一下,新环境才会显示

第二步 安装fake-useragent

终端输入:pip install fake-useragent

进行安装

安装好后,我们使用fake_useragent里面的UserAgent每次访问所使用的头都是随机的

from urllib.request import urlopen,Request
#引用库UserAgent
from fake_useragent import UserAgent

#将伪装头放入,chrome代表浏览器的名字,也可以使用其他浏览器名字
header = {'User-Agent':UserAgent().chrome}

url = 'http://httpbin.org/get'
req = Request(url,headers=header)
resp = urlopen(req)

print(resp.read().decode())

urllib的底层原理

在前面,我们都是使用的是urlopen,他的底层是opener,urlopen也就是默认的opener。

它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。

如果我们需要用到Cookie,只用这个opener是不能达到目的的

所以我们需要创建一个底层的opener,向opener中加入各种各样的功能

最后,将HTTPHandler(参数)加入opener中,即可实现各种不同功能的opener,从而获取特定数据

不同的参数,可以使HTTPHandler拥有不同的功能

也可以传入多个参数,如HTTPHandler(参数1,参数2,参数3···),这样就可以实现一个HTTPHandler拥有多种功能

实例:

from urllib.request import Request

#引入底层opener,与实现opener各种功能的功能块HTTPHandler
from urllib.request import build_opener,HTTPHandler
from fake_useragent import UserAgent

url = 'http://httpbin.org/get'
headers = {'User-Agent':UserAgent().chrome}
req = Request(url,headers = headers)

#向功能块HTTPHandler中加入参数从而确定功能
handler = HTTPHandler(debuglevel= 1)

#将拥有功能的handler加入底层opener中,从而使opener拥有功能
opener = build_opener(handler)

#发送请求
resp = opener.open(req)
print(resp.read().decode())

伪装爬虫—代理ip的使用

使用爬虫时,如果被网站发现你的ip地址,那么网站可以永久禁止你的ip地址进入

所以我们可以使用多个虚拟ip地址,让别的服务器或电脑代替自己的服务器去获取数据

这样的话其中一个虚拟ip地址被封禁,我们可以使用其他虚拟地址继续爬取数据

方法:使用上一节所学习的内容,利用含有可修改ip地址的ProxyHandler,向其中以字典形式加入

虚拟ip地址,ProxyHandler传入opener中,即可。

实例:

from urllib.request import urlopen,Request
from fake_useragent import UserAgent

#引入底层opener,与拥有修改ip地址的功能块ProxyHandler
from urllib.request import build_opener,ProxyHandler

url = 'http://httpbin.org/get'
#向功能块以字典形式传入虚拟地址
Handler = ProxyHandler({'http':'180.120.209.192:8888'})
#将带有虚拟地址的功能块封装入底层opener
opener = build_opener(Handler)

headers = {'User-Agent':UserAgent().chrome}
req = Request(url,headers=headers)
resp = opener.open(req)

print(resp.read().decode())

cookie的使用

想获取网络部分信息或APP的信息数据时,需要提前做一些操作:

比如需要登录,或者提前访问过某些页面才可以获取到。

其实底层就是在网页里面的请求头增加了Cookie信息。

所以如果我们往请求头加入cookie信息,即可绕过这些操作,直接获取数据

注意:如果是动态页面,则需要寻找你所需要数据的url地址

获取cookie方法:

登录进入页面后,右键点击检查,选择网络,ctrl+r刷新,然后双击文件格式为document的文件,找到请求标头下的cookie

将cookie数据复制到爬虫里的请求头,再将拥有cookie数据的请求头封装到url里发送即可

由于文件内容较多,控制台无法展示全部数据,所以我们将爬取的数据保存到html文件中

实例:

from urllib.request import urlopen,Request
from fake_useragent import UserAgent

url = 'https://www.kuaidaili.com/usercenter/'

#向请求头headers里以字典形式装入Cookie
headers = {
           'User-Agent':UserAgent().chrome,
           'Cookie':'channelid=0; sid=1697666664442139; sessionid=75d4dd66aed7cc26f2086bfe0fea061e'
           }


req = Request(url,headers=headers)
resp = urlopen(req)

#将被爬取的数据保存到文件中
with open('tmp.html','wb') as f:      #文件f名为tmp,格式为html,wb表示数据的格式为bytes类型
    f.write(resp.read())              #向文件f内写入爬取的数据

运行代码,获得文件:

打开查询我们的金额:

此时我们不用登录,也可以看到我们账户里的金额了

登陆后保持cookie

手动复制cookie太过繁琐,我们可以通过代码登录的方式解决

传统的urlopen在发送请求后会释放数据,

所以如果想要获取数据我们需要HTTPCookieProcessor来扩展opener的功能

首先我们需要获取:

1.登录所需要url:进入登录页面,右键检查,选择网络,随便输入账号密码,点击登录,获取url

2.封装的数据所需要的内容与格式:点击标头旁的载荷,获取我们想要的数据:

注意:载荷里的数据有next:/的话也要获取下来

获取这些信息后就可以使用爬虫爬取数据了

这次我们用代码实现登陆操作,并爬取登录操作与登录成功后的两部分数据

所以代码分为登陆操作与登陆后

实例:

from urllib.request import Request
from fake_useragent import UserAgent

#引入具有保存cookie作用的HTTPCookieProcessor
from urllib.request import build_opener,HTTPCookieProcessor
#引入具有中文转码作用的库
from urllib.parse import urlencode


#————————————————————————————登陆操作——————————————————————————————

#输入登录网址
login_url = 'https://www.kuaidaili.com/login/'
headers = {'User-Agent':UserAgent().chrome}

#向data里传入账号与密码
data = {
        'username': '1666666',
        'password':'rr211314',
        'login_type': '1',
        }

#向opener赋予保存cookie的功能
handler = HTTPCookieProcessor()
opener = build_opener(handler)

#字典不能直接发送,需要通过encode()转为bytes类型
login_req = Request(login_url,headers=headers,data = urlencode(data).encode())
login_resp = opener.open(login_req)

#————————————————————————————登陆后——————————————————————————————

#输入登陆后的网址,从而爬取登录成功后的数据
index_url = 'https://www.kuaidaili.com/usercenter/'
index_req = Request(index_url,headers=headers)
#此opener也具有保存cookie的功能
index_resp = opener.open(index_req)

#保存文件
with open('html','wb') as f:
    f.write(index_resp.read())

然后我们可以在生成的文件中查看到登录前的账号信息

与登陆成功后的信息,比如账户金额

Cookie的保存与读取

我们可以将登录信息保存为一个可读取的cookie文件

这种文件并不是上一节课所保存的登录数据,而是具有登录功能的可读取文件

这样可以使用多个程序或设备,同时读取文件进行登录操作

这种登陆方式是通过读取文件直接进行登录的,不需要再使用繁杂的登陆操作

登陆后进行数据的爬取

分别创建生成cookie文件的与读取cookie文件的两个方法:

生成文件方法:

1.利用上节课具有保存功能的HTTPCookieProcessor(),向其中传入MozillaCookieJar()

使其从保存登录数据,变成保存具有登录功能的文件,

MozillaCookieJar()会保存具有登录功能的数据

2.将具有保存登录功能的MozillaCookieJar()传入handle,再将handle传入底层opener,

使opener具有保存cookie登陆操作数据的功能

3.使用cookie_jar.save,生成文件

读取文件方法:

1创建一个具有读取功能的MozillaCookieJar(),然后使用MozillaCookieJar().load进行读取

2.将已读取文件信息的MozillaCookieJar()传入HTTPCookieProcessor(),再传入handle中

3.创建一个用来读取cookie文件的opener,将handle传入进去,使其拥有读取功能,完成登录操作

实例:

from urllib.request import Request
from fake_useragent import UserAgent
from urllib.parse import urlencode

#引入具有保存cookie作用的HTTPCookieProcessor
from urllib.request import build_opener,HTTPCookieProcessor
#引入具有生成可保存或读取,用于登录cookie文件的MozillaCookieJar
from http.cookiejar import MozillaCookieJar

#创建保存可读取cookie的文件的方法
def save_cookie():
    login_url = 'https://www.kuaidaili.com/login/'
    headers = {'User-Agent':UserAgent().chrome}
    data = {
            'username': '15517100927',
            'password':'rr211314',
            'login_type': '1',
            'next':'/'
            }
    
    #创建一个准备用来保存cookie文件的对象
    cookie_jar = MozillaCookieJar()
    #将此功能赋予handler,从而使其从生成保存登录数据的文件变成保存具有登录功能的文件
    handler = HTTPCookieProcessor(cookie_jar)
    #创建用于保存cookie登录功能文件的opener
    opener = build_opener(handler)
    login_req = Request(login_url,headers=headers,data = urlencode(data).encode())
    login_resp = opener.open(login_req)
    
    #生成文件为cookie.txt
    cookie_jar.save('cookie.txt',ignore_discard=True,ignore_expires=True)

#创建读取cookie的文件的方法
def use_cookie():
    index_url = 'https://www.kuaidaili.com/usercenter/'
    headers = {'User-Agent':UserAgent().chrome}
    index_req = Request(index_url,headers=headers)
    
    #创建一个准备用来读取cookie文件的对象
    cookie_jar = MozillaCookieJar()
    #让对象cookie_jar读取cookie文件
    cookie_jar.load('cookie.txt',ignore_discard=True,ignore_expires=True)
    #将已读取cookie文件的对象传入handle中
    handler = HTTPCookieProcessor(cookie_jar)
    #创建一个新的拥有读取cookie文件的opener
    opener = build_opener(handler)

    index_resp = opener.open(index_req)
    with open('html','wb') as f:
        f.write(index_resp.read())

if __name__ == '__main__':
    #save_cookie()
    use_cookie()

什么是网络爬虫?有什么用?怎么爬? 随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的,如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。如果只是做搜索引擎,那么感兴趣的信息就是互联网中尽可能多的高质量网页;如果要获取某一垂直领域的数据或者有明确的检索需求,那么感兴趣的信息就是根据我们的检索和需求所定位的这些信息,此时,需要过滤掉一些无用信息。前者我们称为通用网络爬虫,后者我们称为聚焦网络爬虫。 阅读详情

相关推荐

网络爬虫之必备知识

摘要:本文主要理清网络爬虫的概念,简要讲解爬虫的必备知识,分为python基础、字符编码、http头信息、http状态码、html基础、爬虫职业道德。内容浅显,主要理一理相关知识。一、网络爬虫的概念   网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗的说,我们写爬虫的目的就是自动从不同的网页上提取海量的数据。以下是我之前爬取的部分数据

CaiNiaoWuZui的专栏 5860

速盾:爬虫攻击的特征是什么?

为了防御爬虫攻击,网站可以采取一些措施,例如限制单个IP地址的请求频率、使用验证码来验证用户、检测异常的URL请求等。因此,如果一个IP地址在短时间内发起了大量请求,或者多个IP地址同时请求同一个资源,那就可能是爬虫攻击。因此,如果网站收到了大量类似的请求,特别是从不同的IP地址发起的请求,那很可能是爬虫攻击。因此,如果一个用户在很短的时间内发送了大量请求,那就可能是爬虫攻击。正常用户在浏览网页时通常是有规律的,而爬虫攻击会以不断增加的频率进行请求,快速地遍历网站上的所有页面或者执行特定的操作。

zhuguowang01的博客 749

爬虫基础(1)什么是网络爬虫

文章目录一. 认识网络爬虫二. 网络爬虫的组成三. 网络爬虫的类型1. 通用网络爬虫2. 聚焦网络爬虫3. 增量式网络爬虫4. 深层网络爬虫(1)静态网页(2)深层页面和表层页面(3)网络爬虫表单填写四. 网络爬虫的用途 一. 认识网络爬虫 说起网络爬虫,人们常常会用这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地

Python达人 2841

Python网络爬虫笔记(3)HTTP和HTTPS

HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网...

洪流之源 2367

【Zephyr 系列 29】低功耗调试指南:电流测量、系统睡眠与功耗分析

Zephyr低功耗调试指南(150字摘要) 针对物联网设备续航需求,本文解析Zephyr低功耗调试方法:1️⃣ 机制:启用PM子系统和tickless idle,配置睡眠策略;2️⃣ 测量:推荐功耗分析仪捕捉μA级电流波动;3️⃣ 优化:管理唤醒源(如GPIO/RTC)、调整BLE广播/连接参数,挂起闲置外设;4️⃣ 分析:建立功耗文档,对比不同模式电流(如待机0.6mA vs广播3.2mA)。强调低功耗需系统性设计,初期即需纳入测试流程。下期将探讨Zephyr OTA升级实现。

hemoparrot的专栏 1180

别再死磕官方文档了!用宿舍开黑的故事,5分钟搞懂Autosar CanNM网管报文

本文通过宿舍开黑游戏的生动类比,深入浅出地解析了Autosar CanNM网管报文的工作原理。从游戏队友协作到汽车ECU节点的同步机制,详细介绍了网管报文的唤醒流程、通信协议及休眠策略,帮助读者快速掌握这一关键技术。

weixin_30463341的博客 262

网络爬虫三大特性

(1) 传统爬虫,像nutch、hetriex之类的,以爬取简单页面为好,即没有复杂请求的页面。但随着web2.0的兴起,越来越多的网站采用很多动态交互技术如ajax之类的来提升用户体验、需用户登陆才可访问的页面等,它们就无能为力了,或者说需要二次开发的开发成本太高,很多人放弃用它们。 (2) 定制爬虫,针对一些大数据平台,如微博、电商、点评网之类的,页面交互复杂、用户登陆后方可访问,往往是需要

u013027725的专栏 4991

Delta并联机构运动学正逆解:从理论建模到Matlab实战

本文深入解析了Delta并联机构运动学正逆解的核心原理与实战方法。通过几何建模,清晰阐述了其“逆解简单、正解复杂”的特性,并详细推导了基于一元二次方程的逆解解析算法与采用牛顿-拉弗森迭代法的正解数值算法。文章结合完整的Matlab代码实例,从符号推导到数值求解,提供了从理论到实践的完整实现路径,助力机器人开发者掌握Delta并联机构的运动学分析。

weixin_29096377的博客 433

网页三大特征及爬虫思路和流程(爬虫)

网页三大特征: 1.网页都有自己唯一的URL(统一资源命令符)来进行定位 2.网页都使用HTML(定位超文本标记语言)来描述页面信息 3.网页都使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据 爬虫的设计思路: 1.首先确定需要爬取的网页URL地址 2.通过HTTP/HTTPS协议来获取对应的HTML页面 3.提取HTML页面里有用的数据         a.如果是需...

hsy_666的博客 2296

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3052

运行后选择GDB/LLDB出现这样的窗口:launch: program ‘输入程序名称,例如 D:\Desktop\新建文件夹\a.exe‘ does not exist...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1129

什么情况,爬虫今年又爆了。。。

Python接单是近年来越来越受欢迎的一种兼职方式了。按市场需求排,主要在网络爬虫、Web后台接口和数据处理与分析三个技术点上。后两者在需求上不大,而近两年业界对爬虫技术服务的需求量一直在涨,且有愈演愈烈的趋势,尤其最近这个节点,爬取数据的需求也越来也多了。现在很多圈子里的大佬,都在利用爬虫技术接私活:那Python爬虫学到什么程度可以接单?目前市场上中小行网页的加密主要采用的是算法系的加密,而算...

Python小二 524

【系统分析师】高分论文:论面向对象设计方法及应用

本文以某市职业院校合并后的信息化系统建设项目为例,探讨了面向对象设计方法在系统开发中的应用。作为系统分析师,作者在415.6万元、6个月工期的项目中,通过遵循单一职责原则(简化构件库)、依赖倒置原则(开发公共接口)和开闭原则(构件扩展)等设计原则,成功完成了5个子系统融合改造和4个智慧实训室建设。项目采用J2EE分层设计和SOA架构,最终在2022年11月顺利上线,提升了教学管理效率,获得用户好评。文章总结了设计原则对提高系统复用性、可维护性的重要作用,同时也反思了部署过程中的经验教训。

数据知道的博客 7955

网络爬虫【简介】

网络爬虫的简介和浏览器分析工具

2401_88885149的博客 1万+

华为OD机试 - 机器人活动区域(Java 双机位C卷 200分)

现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。之后M行表示网格数值,每行N个数值(数值大小用k表示),数值间用单个空格分隔,行首行尾无多余空格。说明:图中绿色区域,相邻网格差值绝对值都小于等于1,且为最大区域,对应网格点数目为6。M、N、k均为整数,且1

学Java,找哪吒 916

R3LIVE项目实战(3) —双目相机与激光雷达 lidar_camera_calib联合标定

lidar_camera_calib是一个在无目标环境中,用于高分辨率LiDAR(例如Livox)和摄像机之间准确的外部标定工具。我们的算法可以在室内和室外场景中运行,并且只需要场景中的边缘信息。如果场景适合,我们可以实现类似于或甚至超过基于目标的方法的像素级准确度。我们使用标定的外部参数给点云上色,并与实际图像进行比较。A和C是点云的局部放大视图。B和D是与A和C中的点云对应的摄像机图像的部分。

几度春风里的博客 4057

网络爬虫是什么?怎么学python爬虫

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。

Itmastergo的博客 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

终于有人把网络爬虫讲明白了

摘要:Python网络爬虫的详尽解释。导读:网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果...

苏克的博客 4342

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

网络爬虫是什么

作为一家大数据公司的运营小编,经常会有人问我“诶?你说的爬虫是什么呀”“爬虫的用途是什么呀?”“你们公司是卖爬虫的吗,有蜥蜴吗?”等一系列问题,面对这些问题,小编是绝望的。那么爬虫到底是什么呢? 一、爬虫是什么 以下是百度百科上对于网络爬虫的定义: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或

u011231755的博客 5万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2634

什么是网络爬虫?有什么用?怎么爬?终于有人讲明白了

【导读】网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。 此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测...

python学习者的博客 3万+

网络爬虫技术

本文介绍了网络爬虫的基础概念与应用。主要内容包括:1)爬虫定义与分类,分为通用、聚焦、增量式和深层网络爬虫四种类型;2)核心工作原理,涉及HTTP请求过程、响应结构和网页基础;3)常见爬取策略如宽度优先(BFS)和深度优先(DFS)遍历;4)Python中Requests库的使用方法,包括请求发送、响应处理和异常捕获。文章通过百度网页爬取实例,展示了网络爬虫从发送请求到获取响应的完整流程,为初学者提供了网络数据采集的基础知识框架。

2302_78993464的博客 2958

网络爬虫详解

网络爬虫(web crawler,又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 产生背景 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南

顺其自然~专栏 9168

网络爬虫的定义是什么?

网络爬虫的定义是什么?网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。网络爬虫在我们的生活中扮演怎样的角色?在数字化时代,信息如同潮水般汹涌而来。过去,我们可能依赖书籍、报纸或电视来获取信息,但这些渠道的信息量有限,而且筛选过的信息未必能满足我们的需求。如今,互联网为我们提供了海量的信息,但同时也带来了“信息过载”的问题。

logic1001的博客 2345
上一篇: 异常机制
下一篇: 列表
可爱软萌喵酱
博客等级 码龄5年 100粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值