网络协议抓包分析与爬虫入门

一.Wireshark抓取疯狂聊天数据包

1.1抓取准备

1.下载疯狂聊天可执行.exe,打开

下载地址:https://pan.baidu.com/s/1KNQVTjDP_MvOGYVk34dtfg
提取码:2000
在这里插入图片描述
2.关闭电脑的防火墙。
3.关闭除了wlan以外的其他网络连接:
在这里插入图片描述

1.2开始聊天

输入相同的房间号开始聊天
在这里插入图片描述
wireshark抓取数字信息数据包
在这里插入图片描述
在这里插入图片描述
发送数据为111
抓取中文数据包:
在这里插入图片描述

在这里插入图片描述
中文数据为:你好
抓取英文数据包:
在这里插入图片描述
英文为:aaa
参考文献:https://blog.csdn.net/qq_55691662/article/details/121440344?spm=1001.2014.3001.5501

二.网络爬虫入门学习

1.1 网络爬虫定义
网络爬虫英文名叫Web Crawler或Web Spider,是一种自动浏览网页并采集所需要信息的程序
1.2 爬虫原理
爬虫从初始网页的URL开始, 获取初始网页上的URL
在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列
直到满足系统给定的停止条件
1.3 爬虫工作的过程
URL管理模块:发起请求。一般是通过HTTP库,对目标站点进行请求。等同于自己打开浏览器,输入网址
下载模块:获取响应内容(response)。如果请求的内容存在于服务器上,那么服务器会返回请求的内容,一般为:HTML,二进制文件(视频,音频),文档,Json字符串等
解析模块:解析内容。对于用户而言,就是寻找自己需要的信息。对于Python爬虫而言,就是利用正则表达式或者其他库提取目标信息
存储模块:保存数据。解析得到的数据可以多种形式,如文本,音频,视频保存在本地

示例一

爬取南阳理工学院ACM题目网站http://www.51mxd.cn/ 练习题目数据的抓取和保存
在这里插入图片描述
编程工具:jupyter
运行环境:python3.8
导入库:

import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条

完整代码:

import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条

#模拟浏览器访问
Headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'

#表头
csvHeaders = ['题号','难度','标题','通过率','通过数/总提交数']

#题目数据
subjects = [];

#爬取题目
print('题目信息爬取中:\n')
for pages in tqdm(range(1,11+1)):#信息从第1页到12页
    #传入url
    r=requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm',Headers)
    
    #检查是否异常
    r.raise_for_status()

    #输出文档为utf-8编码
    r.encoding = 'utf-8'

    # 解析URL
    soup = BeautifulSoup(r.text, 'html5lib')

    #查找爬取与csvHeaders表头中相关所有内容
    td = soup.find_all('td')

    #新定义一个subject用来存放当前页面爬取的满足特征的信息
    subject = []

    for t in td:
        if t.string is not None:
            subject.append(t.string)
            if len(subject) == 5:#通过长度判断subject内容是否爬取到上面5项
                subjects.append(subject)#把subject存放进上面的subjects中
                subject = []#subject置空

# 存放题目
with open('information.csv', 'w', newline='') as file:
    fileWriter = csv.writer(file)
    fileWriter.writerow(csvHeaders)
    fileWriter.writerows(subjects)

print('\n题目信息爬取完成!!!')


在这里插入图片描述
在这里插入图片描述

三、示例二

将重庆交通大学新闻网站中近几年所有的信息通知(http://news.cqjtu.edu.cn/xxtz.htm) 的发布日期和标题全部爬取下来,并写到CSV电子表格中。
打开网页:
在这里插入图片描述
检查:
在这里插入图片描述

具体代码:

import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条
import urllib.request, urllib.error  # 制定URL 获取网页数据

#所有新闻标题
subjects=[]

#模拟浏览器访问
Headers = {#模拟浏览器头部信息
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53"}

#表头
csvHeaders=['时间','标题']

print('信息爬取中:\n')
for pages in tqdm(range(1,65+1)):#信息从第一页到66页
    #发出请求
    request=urllib.request.Request(f'http://news.cqjtu.edu.cn/xxtz/{pages}.htm',headers=Headers)
    html="";
    #请求成功则获取网页内容
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code) #如果捕获到了HTTPError,则输出code
        if hasattr(e,"reason"):
            print(e.reason) #如果捕获到了URLError,则输出reason
    #解析网页
    soup=BeautifulSoup(html,'html5lib')
    #存放一条新闻
    subject=[]
    #查找所有li标签
    li=soup.find_all('li')
    #执行流程:l依次表示li中的一个元素,遍历完所有元素循环结束
    for l in li:
        #查找满足条件的div标签
        if l.find_all('div',class_="time") is not None and l.find_all('div',class_="right-title") is not None:
            #时间
            for time in l.find_all('div',class_="time"):
                subject.append(time.string)
            #新闻标题
            for title in l.find_all('div',class_="right-title"):
                for t in title.find_all('a',target="_blank"):
                    subject.append(t.string)
            if subject:
                print(subject)
                subjects.append(subject)
        subject=[]
#保存数据
with open('new.csv','w',newline='',encoding='utf-8') as file:
    fileWriter=csv.writer(file)
    fileWriter.writerow(csvHeaders)
    fileWriter.writerows(subjects)

print('\n信息爬取完成!!!')

在这里插入图片描述
在这里插入图片描述
参考文献:https://blog.csdn.net/qq_55691662/article/details/121437828?spm=1001.2014.3001.5501

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值