爬虫入门练习

article/2025/10/12 22:25:06

目录

  • 网络爬虫
  • 一、爬取[南阳理工OJ题目](http://www.51mxd.cn/problemset.php-page=1.htm)
    • python代码
    • 结果
  • 二、爬取[重交新闻](http://news.cqjtu.edu.cn/xxtz.htm)
    • python代码
    • 结果
  • 小结

网络爬虫

简介

网络爬虫英文名叫Web Crawler戒WebSpider。是一种自动浏览网页并采集所需要信息癿程序。
通过编写脚本模拟浏览器发起请求获取数据。爬虫从初始网页的URL开始, 获取初始网页上的URL,在抓取网页的过程中,不断从当前页面抽取新的url放入队列。直到满足系统给定的停止条件才停止。

一、爬取南阳理工OJ题目

爬取每道题的题号,难度,标题,通过率,通过数/总提交数
在这里插入图片描述

python代码

安装第三方包requests,BeautifulSoup4

pip install requests
pip install BeautifulSoup4

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

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')
# tqdm作业:以进度条方式显示爬取进度
# 爬取11页所有题目信息
for pages in tqdm(range(1, 11 + 1)):# get请求第pages页r = requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm', Headers)# 判断异常r.raise_for_status()# 设置编码r.encoding = 'utf-8'# 创建BeautifulSoup对象,用于解析该html页面数据soup = BeautifulSoup(r.text, 'lxml')# 获取所有td标签td = soup.find_all('td')# 存放某一个题目的所有信息subject = []# 遍历所有tdfor t in td:if t.string is not None:subject.append(t.string)  # 获取td中的字符串if len(subject) == 5:   # 每5个为一个题目的信息subjects.append(subject)subject = []# 存放题目
with open('NYOJ_Subjects.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)  # 写入表头fileWriter.writerows(subjects)   # 写入数据print('\n题目信息爬取完成!!!')

在这里插入图片描述

结果

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

二、爬取重交新闻

爬取新闻的发布日期 和 标题
在这里插入图片描述

python代码

import requests
from bs4 import BeautifulSoup
import csv# 获取每页内容
def get_one_page(url):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'}try:info_list_page = []  # 一页的所有信息resp = requests.get(url, headers=headers)resp.encoding = resp.status_codepage_text = resp.textsoup = BeautifulSoup(page_text, 'lxml')li_list = soup.select('.left-list > ul > li')  # 找到所有li标签for li in li_list:divs = li.select('div')date = divs[0].string.strip()title = divs[1].a.stringinfo = [date, title]info_list_page.append(info)except Exception as e:print('爬取' + url + '错误')print(e)return Noneelse:resp.close()print('爬取' + url + '成功')return info_list_page# main
def main():# 爬取所有数据info_list_all = []base_url = 'http://news.cqjtu.edu.cn/xxtz/'for i in range(1, 67):if i == 1:url = 'http://news.cqjtu.edu.cn/xxtz.htm'else:url = base_url + str(67 - i) + '.htm'info_list_page = get_one_page(url)info_list_all += info_list_page# 存入数据with open('教务新闻.csv', 'w', newline='', encoding='utf-8') as file:fileWriter = csv.writer(file)fileWriter.writerow(['日期', '标题'])  # 写入表头fileWriter.writerows(info_list_all)  # 写入数据if __name__ == '__main__':main()

在这里插入图片描述

结果

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

小结

分析所要获取的内容信息的存放位置后设置条件进行网络爬虫。

链接
网络爬虫入门


http://chatgpt.dhexx.cn/article/7ihK3eVr.shtml

相关文章

python爬虫网络中断_python爬虫中断

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 当redis的队列为空时,爬虫会重新爬取; 当队列不为空时,爬虫便会接着上次…

爬虫知识综合

1. Scrapy怎么设置深度爬取? 通过在settings.py中设置DEPTH_LIMIT的值可以限制爬取深度,这个深度是与start_urls中定义url的相对值。也就是相对url的深度。若定义url为http://www.domz.com/game/,DEPTH_LIMIT1那么限制爬取的只能是此url下一级的网页。深度大于设…

爬虫之异步爬虫asyncio

与异步爬虫的相见 文章目录 一、asynico是什么?二、使用步骤 1.普通用法2,在爬虫里面的用法 一、asynico是什么? 简言之,就是用这个库可以来实现异步IO 二、使用步骤 1,普通用法 1,下面我们来看一个案例&#xff1…

网络爬虫之规则

网络爬虫之规则 一.Requests库的get()方法1.1requests库的安装1.2 测试requests库的效果1.3 requests库的7个主要方法1.4 requests中的get方法1.5 Response对象的属性(牢记)1.6 理解Response的编码1.7 对以上知识的讲解运用 二.爬取网页的通用代码框架2.…

网络爬虫入门学习

文章目录 一、初识网络爬虫1.1 网络爬虫定义1.2 爬虫原理1.3 爬虫工作的过程 二、示例一2.1 需要的内置库以及第三方库2.2 具体代码2.3 结果展示: 三、示例二3.1 确定要爬取信息的位置3.2 具体代码3.3 结果展示 四、总结五、参考文献 一、初识网络爬虫 1.1 网络爬虫…

爬虫-Python编程入门

文章目录 一.爬虫1.初识网络爬虫2.网络爬虫的分类2.1 通用网络爬虫2.2 增量爬虫2.3 垂直爬虫2.4 Deep Web爬虫 3.Robots协议 二.创建anaconda虚拟环境三.爬取网站 http://www.51mxd.cn/练习题目数据并保存四.爬取网站http://news.cqjtu.edu.cn/xxtz.html中近几年的消息通知的发…

python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍

python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv文件中;再读取csv文件当中的每个英文名链接,采用循环的方法读取每一个英文名…

python爬虫什么意思-python的爬虫是什么意思

Python爬虫即使用Python程序开发的网络爬虫(网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。其实通俗的讲就是通过程序去获取 web 页面上自己想要的数据,也就是自动抓取数…

python爬虫英文单词_Python_爬虫百度英文学习词典

主方法main 定义主函数main,程序的入口,首先导入io包,用os.path.exists判断字典文件是否存在,如果不存在则新建一个,然后进入循环中,让用户输入相应的数字,执行相应的功能。 def main(): fla…

爬虫基础知识

一、Scrapy 1、cookie设置 目前cookie的设置不支持在headers进行设置, 需要通过以下三种方式进行设置: 第一种:setting文件中设置cookie 当COOKIES_ENABLED是注释的时候,scrapy默认没有开启cookie。当COOKIES_ENABLED没有注释设置为False的…

爬虫介绍

这里写目录标题 1 爬虫介绍1.1 什么是爬虫1.2 爬虫的作用1.3 业界情况1.4 合法性1.5 反爬1.6 爬虫的本质1.7 爬虫的基本流程1.8 爬虫的基本手段1.9 为什么是python 1 爬虫介绍 1.1 什么是爬虫 爬虫更官方点的名字叫数据采集,英文一般称作spider 网络爬虫也叫网络蜘…

pythonrequests爬虫外文文献_Python爬虫(一):爬虫介绍、Requests库介绍及实例-Go语言中文社区...

本文主要内容: 1.爬虫的相关概念。 2.Requsets库安装。 3.Requests库介绍。 4.爬取网页的通用代码框架。 1.爬虫相关概念。 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照…

Python网络爬虫(一)---urllib

什么是网络爬虫 网络爬虫英文可以叫crawler,也可以叫spider,简而言之就是利用计算机从网上抓取你所感兴趣的文件、图片、视频等。其实在大多数情况下,没有什么网络爬虫,我们也可以根据自己所需要的,通过浏览器从网上下…

python爬虫爬取英文考研词汇

这几天开始背诵考研单词,在网上查找英语考研必备词汇,发现都是长这样的: 每一页的点击太费时费力了。因此萌生了为什么不能用爬虫把单词爬下来保存在本地呢?说干咱就干。首先点开搜索中的某个网页,分析网页的结构,找到其中的规律。例如,我找的是跨考考研的网站: 这是…

python爬虫: 爬一个英语学习网站

爬虫的基本概念 关于爬虫的基本概念, 推荐博客https://xlzd.me/ 里面关于爬虫的介绍非常通俗易懂. 简单地说,在我们输入网址后到可以浏览网页,中间浏览器做了很多工作, 这里面涉及到两个概念: IP地址: IP地址是你在网络上的地址,大部分情况下…

可视化数据分析-基于JavaScript的d3实践学习

目录 一.svg简介 二.D3简介 D3功能来源 常用语法说明 三.d3可视化访问MySQL数据库 实现方法 四.具体用例实现 svg绘制直方图 svg绘制二叉树(以电影票房为例) D3进行数据可视化(链接数据库) D3绘制直方图​ D3绘制饼图…

Kindle产品评论数据分析---基于excel的分析过程

目录 业务背景 一)明确分析目的 二)数据采集 三)数据清洗 四)数据分析与构建模型 1、相关产品的评论数排名和平均评分反映的问题 2、各评论占比,推荐评论中好评占比 3、kindle相关产品随时间变化其评论数的变化…

数据挖掘HeartbeatClassification——数据分析

如同计算机视觉中一样,在训练目标识别的网络之前,会对图片进行预处理,如 裁切,旋转、放大缩小,以加强网络的泛化能力。在数据挖掘中,我们首先要做的就是对拥有的数据进行分析( 涉及到《概率论与数理分析》的…

javaScript数据可视化

文章目录 canvas画布介绍绘制线段起始点设置其他点设置(可以有多个)划线方法 属性填充线段颜色线段宽度线段例子 绘制矩形第一种方式:第二种方式矩形例子 绘制圆形圆形例子 清除画布清除例子 绘制文字属性 svg介绍:基本的svg元素例…

Python交互式数据分析报告框架:Dash

译者序 原文于2017年6月21日发布,时过半载,将这篇既不是教程,也不是新闻的产品发布稿做了一番翻译,为何?只因去年下半年的时候,用R语言的博哥和龙少有Shiny这样的框架可以开发交互式整合Web数据分析报告&am…