网络爬虫重庆交通大学新闻网站中所有的信息通知
一、代码部分
1.新建.py文件
运行后生成
2.调用了 requests网页请求库和Beautiful Soup网页解析库
import requests# 导入网页请求库 from bs4 import BeautifulSoup# 导入网页解析库
3.定义访问浏览器所需的请求头和写入csv文件需要的表头以及存放题目数据的列表
4.根据表头csvHeaders中内容爬取信息,并在进度条中显示进度
# 爬取题目
print(题目信息爬取中:
)
for pages in tqdm(range(1, 11 + 1)):#一页一页地爬取信息
# 传入URL
r = requests.get(fhttp://www.51mxd.cn/problemset.php-page={pages}.htm, Headers)
r.raise_for_status()
r.encoding = utf-8#输出文档为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置空
5.把爬取内容存放文件NYOJ_Subjects.csv中
二、爬取重庆交通大学近几年所有的信息通知
先进入重庆交通大学官网(),确定爬取信息位置
,F12检查代码
运行代码爬虫
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 17 14:39:03 2021
@author: 86199
"""
import requests
from bs4 import BeautifulSoup
import csv
from tqdm import tqdm
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(信息爬取中:
)
for pages in tqdm(range(1, 65 + 1)):
# 发出请求
request = urllib.request.Request(fhttp://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)
if hasattr(e, "reason"):
print(e.reason)
# 解析网页
soup = BeautifulSoup(html, html5lib)
# 存放一条新闻
subject = []
# 查找所有li标签
li = soup.find_all(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(test.csv, w, newline=,encoding=utf-8) as file:
fileWriter = csv.writer(file)
fileWriter.writerow(csvHeaders)
fileWriter.writerows(subjects)
print(
信息爬取完成!!!)
三、总结
网络爬虫还是很有意思的,就是很多没有领悟到。还需要多加练习
四、参考
上一篇:
Java架构师技术进阶路线图
下一篇:
K8S基本概念与架构解析
