网络爬虫重庆交通大学新闻网站中所有的信息通知

一、代码部分

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(
信息爬取完成!!!)

三、总结

网络爬虫还是很有意思的,就是很多没有领悟到。还需要多加练习

四、参考

经验分享 程序员 微信小程序 职场和发展