简单的爬虫训练

目录

  • 一、内容
  • 二、爬取过程
  • 三、参考

一、内容

完成对南阳理工学院ACM题目网站 http://www.51mxd.cn/ 练习题目数据的抓取和保存。抓取的数据有:
‘题号’, ‘难度’, ‘标题’, ‘通过率’, ‘通过数/总提交数’

二、爬取过程

  1. 导入需要的包
  • BeautifulSoup4
  • requests
    等等
  1. 查看网页源代码
    简单的爬虫训练_第1张图片
    分析的我们需要的数据都在标签td中所有抓取比较简单,只需要通过td标签进行提取数据即可。

  2. 代码

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)): # 爬取页数为12页

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

    r.raise_for_status()  # 状态码

    r.encoding = 'utf-8' # 编码形式

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

    td = soup.find_all('td')  # 抓取所有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('./file/NYOJ_Subjects.csv', 'w', newline='') as file:
    fileWriter = csv.writer(file)  
    fileWriter.writerow(csvHeaders)  # 存入表头
    fileWriter.writerows(subjects)   # 存入抓取的数据

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

  1. 运行获取数据

简单的爬虫训练_第2张图片

三、参考

更多练习参考爬取重庆交通大学新闻网站信息通知

你可能感兴趣的:(#,人工智能,机器学习,python,爬虫,开发语言)