Untitled

1.wireshark抓取网络数据包练习

目标软件: 疯狂聊天
抓取得到以下如下请添加图片描述
端口号为开始聊天时设置的房间号+5000,通过在本网段广播实现与同房间任意人员进行聊天。采用协议为UDP。
取得数据包如下:
请添加图片描述
字符在这里不可见是因为字符中文编码采用utf-8编码格式,将其复制进其他软件,采用utf-8格式即可看到数据,具体数据如下:
请添加图片描述

2.python爬虫抓取数据

1.南阳理工学院ACM题目网站练习题目数据的抓取和保存

目标网站:http://www.51mxd.cn/
本次采用requests + beautifulsoup
分析网站源码,可以看到我们需要的信息均在<td>标签内,如下所示
同时,通过浏览器显示的网站,可以得知得到的页面信息由problemset.php-page=x.htm决定,其中x为页面编号,共计11页
请添加图片描述
且没有其他不保存所需信息的td标签。因此,直接将所有td标签中信息提取出来即可。
具体代码如下:

import requests
from bs4 import BeautifulSoup
import csv
from tqdm import tqdm

# 模拟浏览器访问
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)):

    r = requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm')

    r.raise_for_status()

    r.encoding = 'utf-8'

    soup = BeautifulSoup(r.text, 'html5lib')

    td = soup.find_all('td')

    subject = []

    for t in td:
        if t.string is not None:
            subject.append(t.string)
            if len(subject) == 5:
                subjects.append(subject)
                subject = []

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

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

取得数据如下:
在这里插入图片描述

2.爬取重庆交通大学新闻网站中近几年所有的信息通知的发布日期和标题

目标网址:http://news.cqjtu.edu.cn/
分析网站地址,可以得知页面编号由xxtz/x.htm决定,其中x为页面编号,编号为倒序,即最后一页编号为1,共计65,第一页为特殊格式,为xxtz.htm
查看网站源码,本次所需信息相关部分代码如下
在这里插入图片描述
可以看到两个所需信息均在div标签中,但所属class类不同,通过这个,可以将这两个属性提取出来。
由于采用requests一直报403错误,本次采用urllib+beautifulsoup
具体代码如下:

from bs4 import BeautifulSoup
import csv
from tqdm import tqdm
import sys
import urllib
# 表头
csvHeaders = ['日期', '标题']

# 数据
subjects = []

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
def remove_upprintable_chars(s):
    #移除所有不可见字符
    return ''.join(x for x in s if x.isprintable())


print('信息爬取中:\n')
for pages in tqdm(range(1, 66 +1 )):
    url="http://news.cqjtu.edu.cn/xxtz"
    if pages == 66:
        url =url+".htm"
    else:
        url = f'http://news.cqjtu.edu.cn/xxtz/{pages}.htm'
    req = urllib.request.Request(url, headers=headers)
    temp = urllib.request.urlopen(req).read().decode('utf-8')

    soup = BeautifulSoup(temp, 'html5lib')

    li = soup.find_all('div',class_ ='time')
    a = soup.find_all('div',class_ = 'right-title')
    subject = []
    for i in range(0,len(li)):
        if li[i].string is not None:
            subject.append(li[i].string)
            subject.append(a[i].a.string)
            for i in range(0,2):
                if subject[i].find('\n') != -1:
                    subject[i] = subject[i].replace('\n','')
                if subject[i].isprintable() == False:
                    subject[i] = remove_upprintable_chars(subject[i])
            subjects.append(subject)
            subject = []

# 存放题目
with open('D://myworks//network//JW_news.csv', 'w', newline='',encoding = 'utf-8-sig') as file:
    fileWriter = csv.writer(file)
    fileWriter.writerow(csvHeaders)
    for i in subjects:
        for j in i:
            if j.isprintable() == False:
                print('xxx')
                
    fileWriter.writerows(subjects)

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

取得数据如下:
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值