网络爬虫入门学习

article/2025/10/12 22:27:13

文章目录

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

一、初识网络爬虫

1.1 网络爬虫定义

网络爬虫英文名叫Web Crawler或Web Spider,是一种自动浏览网页并采集所需要信息的程序
在这里插入图片描述
在这里插入图片描述

1.每个节点都是一个网页
2.每条边都是一个超链接
3.网络爬虫就是从这样一个网络图中抓取感兴趣的内容

1.2 爬虫原理

  • 爬虫从初始网页的URL开始, 获取初始网页上的URL
  • 在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列
  • 直到满足系统给定的停止条件

1.3 爬虫工作的过程

在这里插入图片描述

  • URL管理模块:发起请求。一般是通过HTTP库,对目标站点进行请求。等同于自己打开浏览器,输入网址
  • 下载模块:获取响应内容(response)。如果请求的内容存在于服务器上,那么服务器会返回请求的内容,一般为:HTML,二进制文件(视频,音频),文档,Json字符串等
  • 解析模块:解析内容。对于用户而言,就是寻找自己需要的信息。对于Python爬虫而言,就是利用正则表达式或者其他库提取目标信息
  • 存储模块:保存数据。解析得到的数据可以多种形式,如文本,音频,视频保存在本地

网络爬虫具体详情参考:什么是网络爬虫?有什么用?怎么爬?终于有人讲明白了

二、示例一

爬取南阳理工学院ACM题目网站http://www.51mxd.cn/ 练习题目数据的抓取和保存
在这里插入图片描述

编程工具:vscode
运行环境:Python3.8

2.1 需要的内置库以及第三方库

在这里插入图片描述

2.2 具体代码

  • 导入库(本次调用了 requests网页请求库和Beautiful Soup网页解析库)
import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条

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

完整代码:

import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条#模拟浏览器访问
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)):#信息从第1页到12页#传入urlr=requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm',Headers)#检查是否异常r.raise_for_status()#输出文档为utf-8编码r.encoding = 'utf-8'# 解析URLsoup = 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置空# 存放题目
with open('information.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n题目信息爬取完成!!!')

2.3 结果展示:

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

三、示例二

将重庆交通大学新闻网站中近几年所有的信息通知(http://news.cqjtu.edu.cn/xxtz.htm) 的发布日期和标题全部爬取下来,并写到CSV电子表格中。

3.1 确定要爬取信息的位置

在这里插入图片描述

1.右键要爬的信息,点击检查
在这里插入图片描述
2.观察我们需要爬取的信息所在的位置

这里爬取的是时间和标题
在这里插入图片描述

3.2 具体代码

import requests #导入网页请求库
from bs4 import BeautifulSoup #导入网页解析库
import csv
from tqdm import tqdm #Tqdm 是一个快速,可扩展的Python进度条
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('信息爬取中:\n')
for pages in tqdm(range(1,65+1)):#信息从第一页到66页#发出请求request=urllib.request.Request(f'http://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) #如果捕获到了HTTPError,则输出codeif hasattr(e,"reason"):print(e.reason) #如果捕获到了URLError,则输出reason#解析网页soup=BeautifulSoup(html,'html5lib')#存放一条新闻subject=[]#查找所有li标签li=soup.find_all('li')#执行流程:l依次表示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('new.csv','w',newline='',encoding='utf-8') as file:fileWriter=csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n信息爬取完成!!!')

3.3 结果展示

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

四、总结

简单的网络爬虫还是比较容易实现,Python中通过调用库来进行爬虫获取信息比较简单方便。爬虫的深入理解还需要我们长时间的学习。

五、参考文献

网络爬虫入门
什么是网络爬虫?有什么用?怎么爬?终于有人讲明白了


http://chatgpt.dhexx.cn/article/1jx6psGk.shtml

相关文章

爬虫-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…

【数据可视化】免费开源BI工具 DataEase 之血缘关系分析

近期,DataEase 发布的版本 V1.8 版本中,在系统管理模块新增了血缘分析功能,可以支持对数据源、数据集、仪表板做关联分析,支持按表格查看和按关系图查看,并且在删除数据源、数据集时,也支持查看对应的血缘分…

数据分析与数据可视化的完成,需要了解一下这四款JS库

四款出色的JavaScript库,帮助大家更为轻松地完成数据分析与可视化工作,具体如下: Data-Driven-Documents (D3.js) 在讨论JavaScript数据分析时忽略掉Data-Driven-Documents (D3),就如同在谈论微软时忽略掉其操作系统 样。 Data-D…

数据挖掘之关联分析(实验展示以及源代码)

数据挖掘之关联分析 算法实现:Apriori算法和FP-growth 算法源代码 简单描述下,关联分析概念 关联分析概念主要参考下面的博文 原文:https://blog.csdn.net/qq_40587575/article/details/81022350 关联分析是从大量数据中发现项集之间有趣的…

【数据分析入门】python数据分析-探索性数据分析之多因子与对比分析可视化

文章目录 多因子与对比分析可视化理论基础假设检验与方差检验假设检验方差检验 相关系数:皮尔逊、斯皮尔曼回归:线性回归PCA与奇异值分解 代码实践交叉分析分组分析相关分析因子分析 总结代码实现 相关性线性回归PCA注意:sklearn中pca用的方法是奇异值分解的方法&am…

数据分析系列之挖掘建模

经过数据探索与数据预处理,得到了可以直接建模的数据,根据挖掘目标和数据形式可以建立分类与预测,聚类分析,关联规则,时序模式和偏差检测等模型,帮助企业提取数据中的商业价值. 分类与预测 对于之前的背景假设,餐饮企业会经常遇到如下问题: 如何基于菜品历史销售情况,以及节…