爬虫入门(简单网页信息爬取)
文章目录
- 一、概念相关
- 1.爬虫
- 2.需要的包
- 二、爬取南阳理工学院ACM题目
- 1.网站分析
- 2.代码编译
- 3.运行结果
- 三、爬取某知名大学官网通知
- 1.网站分析
- 2.代码编译
- 3.运行结果
- 四、总结
- 参考链接
一、概念相关
1.爬虫
网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。
2.需要的包
requests、beautifulsoup4,其他需要的包可以根据自己的需要下载。
二、爬取南阳理工学院ACM题目
1.网站分析
南阳理工学院ACM题目
通过查看网页源代码,可以发现,我们所需要的题号、标题、通过率等都存在于图TD标签内。
进入开发者模式,在搜索框内搜索td,可以发现存在700条相关数据,接下来只要将这700条数据爬取下来就可以了。
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'
# 题目数据
subjects = []
# 表头
csvHeaders = ['题号', '难度', '标题', '通过率', '通过数/总提交数']
定义爬取函数,以及筛选条件
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, 'html5lib')td = soup.find_all('td')#讲所有含TD的项提取出来subject = []for t in td:if t.string is not None:#利用string方法获取其中的内容subject.append(t.string)if len(subject) == 5:subjects.append(subject)subject = []with open('D:\\try45\\pachong\\nylgoj.csv', 'w', newline='') as file:fileWriter = csv.writer(file)fileWriter.writerow(csvHeaders)fileWriter.writerows(subjects)print('\n题目信息爬取完成!!!')
3.运行结果
三、爬取某知名大学官网通知
1.网站分析
一所知名大学
同样的查看网页源代码,可以找到对应的通知时间与标题
在网站内可以发现网站url与网站对应页数是恰好相反的,在爬取时要注意。
2.代码编译
导入头文件及定义文件格式
#导入包
import requests
from bs4 import BeautifulSoup
import csv
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快# 模拟浏览器访问
cqjtu_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_page_number():r=requests.get(f"http://news.cqjtu.edu.cn/xxtz.htm",headers=cqjtu_Headers)r.raise_for_status()r.encoding="utf-8"page_array={'type':'text/javascript'}soup = BeautifulSoup(r.text, 'html5lib')page_num=soup.find_all('script',page_array)page_number=page_num[4].string#只靠标签这些定位好像不是唯一,只能手动定位了page_number=page_number.strip('function a204111_gopage_fun(){_simple_list_gotopage_fun(')#删掉除页数以外的其他内容page_number=page_number.strip(',\'a204111GOPAGE\',2)}')page_number=int(page_number)#转为数字return page_numberdef get_time_and_title(page_num,cqjtu_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=cqjtu_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, 'html5lib')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=[]
写入文件
def write_csv(cqjtu_info):with open('D:\\try45\\pachong\\cqjtu.csv', 'w', newline='',encoding='utf-8') as file:fileWriter = csv.writer(file)fileWriter.writerow(cqjtu_head)fileWriter.writerows(cqjtu_info)print('爬取信息成功')page_num=get_page_number()#获得页数
for i in tqdm(range(page_num,0,-1)):get_time_and_title(i,cqjtu_Headers)
write_csv(cqjtu_infomation)
3.运行结果
四、总结
学会了爬取网页数据,初步的了解了如何使用python爬虫,以及对于一个网页的详细分析。
参考链接
爬虫是什么?
爬虫-Python编程入门1
爬虫入门(简单网页信息爬取)相关推荐
- node 没有界面的浏览器_node.js爬虫入门(二)爬取动态页面(puppeteer)
之前第一篇爬虫教程node.js爬虫入门(一)爬取静态页面讲解了静态网页的爬取,十分简单,但是遇到一些动态网页(ajax)的话,直接用之前的方法发送请求就无法获得我们想要的数据.这时就需要通过爬取动态 ...
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化
最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...
- python爬取去哪网数据_Python爬虫入门:使用Python爬取网络数据
1 网络爬虫 引用百度百科的定义:网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 简单的说,就是有一个程序可以自动去访问网页. 2 Python爬虫 如何实现爬虫? 简单的讲,一共 ...
- Python 爬虫“王者”:微博信息爬取
这里的微博爬虫,我主要实现的是输入你关心的某个大 V 的微博名称,以及某条微博的相关内容片段,即可自动爬取相关该大 V 一段时间内发布的微博信息和对应微博的评论信息. Cookie 获取 与上面的 B ...
- 怎么加载csv_python爬虫入门实战(四)!爬取动态加载的页面
今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...
- c#.net——c#.net异步实现网页信息爬取
之前研究各种语言异步的时候就想做一个C#版本的异步,但是毕竟好久不做了(也就是在大学期间用asp.net做了几个管理系统) 一开始写代码时完全蒙蔽了,语法啥的都忘差不多了~~研究了好几天,也参考了网上 ...
- python爬取携程网旅游_爬虫之携程网旅游信息爬取
最近手又有点闲,闲着无聊就爬取了携程的信息,这个爬虫是我随手写的,各位可以看看. # -*- encoding=utf-8 -*- #爬取携程旅游信息 #2017/8/14 from bs4 impo ...
- 中国大学排名python爬虫_Python爬虫入门实例三之爬取软科中国大学排名
写在前面 这个例子是笔者今天在中国大学MOOC(嵩天 北京理工大学)上学习的时候写下来的.但是很快写完之后我就发现不对劲,首先课程给的例子是中国好大学网站的排名,但是现在这个网站已经重构了,原来的链接 ...
- python爬虫动态加载_python爬虫入门实战(四)!爬取动态加载的页面!
今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...
最新文章
- android上line-height的问题
- CodeForces - 960F[动态开点线段树优化dp]详解
- 线程使用二——线程池
- DEBUG org.springframework.web.servlet.DispatcherServlet - Error rendering view [org.thymeleaf.spring
- 50matches:更准确的搜索引擎
- 查询无序列表中第K小元素
- 两个MYSQL数据同步的SHELL脚本
- WIZnet开源平台ioPlatform所趋,全硬件TCP/IP尽显内芯智慧!
- DELL服务器常见报错信息
- (转)正则表达之零宽断言(零宽度正预测先行断言)
- AI连围棋都可以大胜,何况游戏
- linux查看端口出现unix,linux查看端口被占用状况
- 让网页附件为Word或Excel的文件,下载时直接弹出下载对话框,而不打开它
- vue项目的IE兼容问题
- 微信小程序(safair浏览器)flex布局中的坑
- 手机照片丢失怎么才能恢复
- 【Arduino】PTC热敏电阻的介绍和应用
- 【archlinux】安装系统
- JS获取IP地址,登录地点的方法
- JS中script标签defer和async属性的区别