爬虫-Python编程入门

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

文章目录

      • 一.爬虫
        • 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中近几年的消息通知的发布日期和标题
      • 五.总结
      • 六.参考链接

一.爬虫

1.初识网络爬虫

什么是爬虫?

网络爬虫英文名叨Web Crawler戒Web Spider。

它是一种自动浏览网页并采集所需要信息的程序。

在这里插入图片描述

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

网页的抓取策略

通常来说,网页的抓取策略可以分为以下三类:

1.广度优先

2.最佳优先

3.深度优先

深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。

  • 广度优先:

广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。

特点是,算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫 中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。

  • 最佳优先:

最佳优先搜索策略按照一定的网页分析算法,预测候选URL不目标网页的相似度,或与不主题的相关性,并选取评价最好的一个或几个URL迕行抓取。 它只访问经过网页分析算法预测为“有用”的网页。

特点是,最佳优先策略是一种局部最优搜索算法,在爬虫抓取路径上的很多相关网页可能被忽略。

  • 深度优先:

深度优先搜索策略仍起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地抓取下去,直到处理完 一条路线之后再处理下一条路线。

特点是,深度优先策略算法设计较为简单,但每深入一层,网页价值和 PageRank都会相应地有所下降,相对于其他两种策略而言,此种策略很少被使用。

2.网络爬虫的分类

2.1 通用网络爬虫

通用网络爬虫又称全网爬虫( Scalable Web Crawler)爬行对象从一些种子URL扩充到整个Web,主要为门
站点搜索引擎和大型Web服务提供商采集数据。

通用网络爬虫根据预先设定的一个或若干初始种子URL开始,以此获得初始网页上的URL列表,在爬行过程中不断从URL队列中获一个的URL,进而访问并下载该页面。

2.2 增量爬虫

增式网络吧虫( Incremental Web Crawler)是指对已下载网页采取増量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在定程度上保证所爬行的页面是尽可能新的页面。

增量式吧虫有两个目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。
通用的商业搜索引擎如谷歌,百度等,本质上都属于增量吧虫。

2.3 垂直爬虫

垂直爬虫,又称为聚焦网络爬虫( Focused Crawler),或主题网络爬虫( Topical Crawler)。

是指选择性地爬取那些与预先定义好的主题相关页面的网络爬虫。如Email地址,电子书,商品价格等。

爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。

2.4 Deep Web爬虫

Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。

Deep Web 爬虫爬行过程中最重要部分就是表单填写,包含两种类型:

  1. 基亍领域知识的表单填写

  2. 基亍网页结构分析的表单填写

3.Robots协议

又称机器人协议或爬虫协议, 该协议就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,网络爬虫据此“自觉地”抓取或者不抓取该网页内容。自推出以来 Robots协议已成为网站保护自有敏感数据和网民隐私的国际惯例。

二.创建anaconda虚拟环境

打开Anaconda Prompt,创建虚拟环境(pythonwork是环境名,可自行更改,python=2.7是下载的python版本,也可自行更改)

conda create -n pythonwork python=3.6

激活环境

activate pythonwork

在此虚拟环境中用pip或conda安装requests、beautifulsoup4等必要包。

conda install -n pythonwork requests
conda install -n pythonwork beautifulsoup4
conda install tqdm

打开anaconda可以看见我们刚刚创建的虚拟环境

在这里插入图片描述

在该环境下点击下载Spyder。

三.爬取网站 http://www.51mxd.cn/练习题目数据并保存

打开Spyder,新建.py文件

代码:

# -*- coding: utf-8 -*-
"""
Created on Sun Nov 14 20:50:12 2021@author: hp
"""
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)):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, 'html.parser')td = soup.find_all('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('NYOJ_Subjects.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n题目信息爬取完成!!!')

点击运行,生成文件NYOJ_Subjects.csv

打开该文件:

在这里插入图片描述

成功。

四.爬取网站http://news.cqjtu.edu.cn/xxtz.html中近几年的消息通知的发布日期和标题

打开网址http://news.cqjtu.edu.cn/xxtz.htm爬取新闻

在这里插入图片描述

在这里插入图片描述

网页底部可以看见所有消息共有66个页面,要爬取所有新闻就要知道这些页面的地址,点击下一页可以看见网页链接中如:http://news.cqjtu.edu.cn/xxtz/1.htm有一个数字根据页面数变化,且除首页外,其余页面中的数字都是67-该页面底部页面数。

我们可以用一个简单的循环得到这些页面链接中的数字

代码:

# -*- coding: utf-8 -*-
"""
Created on Sun Nov 14 21:17:21 2021@author: hp
"""
import requests
from bs4 import BeautifulSoup
import csv
from tqdm import tqdm# 模拟浏览器访问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.44'
}
#csv的表头
cqjtu_head=["日期","标题"]
#存放内容
cqjtu_infomation=[]#获取新闻标题和时间
def get_time_and_title(page_num,Headers):#页数,请求头if page_num==66 :url='http://news.cqjtu.edu.cn/xxtz.htm'else :url=f'http://news.cqjtu.edu.cn/xxtz/{page_num}.htm'r=requests.get(url,headers=Headers)r.raise_for_status()r.encoding="utf-8"array={#根据class来选择'class':'time',}title_array={'target':'_blank'}page_array={'type':'text/javascript'}soup = BeautifulSoup(r.text, 'html.parser')time=soup.find_all('div',array)title=soup.find_all('a',title_array)temp=[]for i in range(0,len(time)):time_s=time[i].stringtime_s=time_s.strip('\n                                    ')time_s=time_s.strip('\n                                ')#清除空格temp.append(time_s)temp.append(title[i+1].string)cqjtu_infomation.append(temp)temp=[]# 爬取题目
print('新闻信息爬取中:\n')
for pages in tqdm(range(66, 0,-1)):get_time_and_title(pages,Headers)# 存放题目
with open('cqjtu_news.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(cqjtu_head)fileWriter.writerows(cqjtu_infomation)print('\n新闻信息爬取完成!!!')

运行得到文件cqjtu_news.csv

打开该文件:

在这里插入图片描述
成功。

五.总结

爬取某静态网页信息时,要查看网页源代码,分析要获取信息在什么标签,从标签中取出信息,通过循环获取所有相关url不断获取信息。利用网络爬虫爬取信息能够让我们从众多信息中找到有用信息,节约时间。

六.参考链接

爬虫爬取学校通知信息(python)

资料:
链接:https://pan.baidu.com/s/1cfbtoz6c8BTP2sKG9EmAJQ
提取码:1234


http://chatgpt.dhexx.cn/article/UySh215Z.shtml

相关文章

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…

数据分析系列之挖掘建模

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

【大数据分析与挖掘】挖掘建模之关联分析

文章目录 一、关联规则1.1 常用的关联规则算法1.2 Apriori算法介绍1.2.1 关联规则与频繁项集1.2.2 Apriori算法的思想与性质1.2.3 Apriori算法的实现的两个过程1.2.4 Apriori算法的实现案例 一、关联规则 关联规则分析也成为购物篮分析,最早是为了发现超市销售数据…