爬虫与蜘蛛的学习-oneday

什么是互联网

互联网也叫互连网,万物互连,是庞大的网络连接而成,互联网的结构就像一张大蛛网,如下图

爬虫,爬的是虫,也是数据

爬虫也叫网络蜘蛛,负责捕食互联网上的数据,是一种以网络数据为食的神奇生物。

为什么要爬虫

这是个信息爆炸的时代,庞大的信息量,如果可以换成生活垃圾,那估计可以环绕太阳系无数圈了,但是网络上的信息数据却不都是垃圾,也有被埋没的金子。书上把数据比作未提纯的石油,需要不断挖掘和提纯,那么爬虫就是挖掘的一种方式。
我们无法短时间的应对网络上大规模的数据,但是爬虫可以,他就像一只蜘蛛,准备捕食,将网络上大规模的数据扒下来。

爬虫的是怎么爬的

一个简单的例子:蛛网不止一张,蜘蛛想要去哪张蛛网捕食,这就需要一个url(简单说就是一个网址)了,接下来就是去到这个地址(想这个地址发送请求),接下来,获取网页数据。这就爬完了。
先看一段简单的爬虫代码

from urllib.request import urlopen

# 要访问的地址
url = "http://www.baidu.com/"
# 发送请求
response = urlopen(url)
# 读取内容
info = response.read()
# 打印内容
# 将内容转码为字符串
# print(info.decode())

一段python的爬虫代码就是简单的几步,但是此时爬回来的数据就是一段未经任何处理的原油,或者还未开采。我们可以看下爬回来的数据

十分的乱,就是一堆没啥用的HTML的代码,可以说是一堆脏数据,当然这是最简单的爬虫,我们并没有添加想要爬取的具体目标,仅仅只是扒下代码。

简单的爬虫实战–爬取贴吧页面代码

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

def get_html(url):
    # 定义User_Agent(用户代理)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
    }
    # 封装request对象
    request = Request(url, headers=headers)
    # 发送请求
    response = urlopen(request)
    # 返回HTML代码
    return response.read().decode()

def save_html(html,filename):
    # 爬取内容写入
    with open(filename, 'w', encoding="utf-8") as f:
        f.write(html)

def main():
    num = int(input("请输入要获取多少页:"))
    content = input("请输入要获取贴吧的名字:")
    for i in range(num):
        # 目标地址
        url = f"https://tieba.baidu.com/f?kw={quote(content)}&ie=utf-8&pn={i*50}"
        html = get_html(url)
        filename = '第'+str(i+1)+'页.html'
        save_html(html, filename)

if __name__ == '__main__':
    main()

爬虫也是有技巧的,如我们下面代码中kw和pn的参数,其实我们在分析几个页面的url,就可以知道,kw代表的是关键字,pn代表的是一页有多少个数据,那么通过一些技巧,我们就可以快速的爬取网页内容。

url = f"https://tieba.baidu.com/f?kw={quote(content)}&ie=utf-8&pn={i*50}"

爬虫的合法性

爬虫既然作为一门公开且热门的技术,自然是合法的,但是,凡是也有例外,如,你想爬取一个网站,你比较心急,想快速爬取,写的脚步是一秒钟访问网站10000次,但是人家的网站最大的访问量只有2000,由于你的强制访问,导致人家的服务器奔溃了,你这种行为就会被认为是网络攻击。
例子很现实,做爬虫最好不要涉及隐私,恶意竞争,涉及敏感信息等等,不然你就真的趴下了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌~晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值