文章目录

  • 一、概念相关
    • 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

爬虫入门(简单网页信息爬取)相关推荐

  1. node 没有界面的浏览器_node.js爬虫入门(二)爬取动态页面(puppeteer)

    之前第一篇爬虫教程node.js爬虫入门(一)爬取静态页面讲解了静态网页的爬取,十分简单,但是遇到一些动态网页(ajax)的话,直接用之前的方法发送请求就无法获得我们想要的数据.这时就需要通过爬取动态 ...

  2. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

  3. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化

    最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...

  4. python爬取去哪网数据_Python爬虫入门:使用Python爬取网络数据

    1 网络爬虫 引用百度百科的定义:网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 简单的说,就是有一个程序可以自动去访问网页. 2 Python爬虫 如何实现爬虫? 简单的讲,一共 ...

  5. Python 爬虫“王者”:微博信息爬取

    这里的微博爬虫,我主要实现的是输入你关心的某个大 V 的微博名称,以及某条微博的相关内容片段,即可自动爬取相关该大 V 一段时间内发布的微博信息和对应微博的评论信息. Cookie 获取 与上面的 B ...

  6. 怎么加载csv_python爬虫入门实战(四)!爬取动态加载的页面

    今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...

  7. c#.net——c#.net异步实现网页信息爬取

    之前研究各种语言异步的时候就想做一个C#版本的异步,但是毕竟好久不做了(也就是在大学期间用asp.net做了几个管理系统) 一开始写代码时完全蒙蔽了,语法啥的都忘差不多了~~研究了好几天,也参考了网上 ...

  8. python爬取携程网旅游_爬虫之携程网旅游信息爬取

    最近手又有点闲,闲着无聊就爬取了携程的信息,这个爬虫是我随手写的,各位可以看看. # -*- encoding=utf-8 -*- #爬取携程旅游信息 #2017/8/14 from bs4 impo ...

  9. 中国大学排名python爬虫_Python爬虫入门实例三之爬取软科中国大学排名

    写在前面 这个例子是笔者今天在中国大学MOOC(嵩天 北京理工大学)上学习的时候写下来的.但是很快写完之后我就发现不对劲,首先课程给的例子是中国好大学网站的排名,但是现在这个网站已经重构了,原来的链接 ...

  10. python爬虫动态加载_python爬虫入门实战(四)!爬取动态加载的页面!

    今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...

最新文章

  1. android上line-height的问题
  2. CodeForces - 960F[动态开点线段树优化dp]详解
  3. 线程使用二——线程池
  4. DEBUG org.springframework.web.servlet.DispatcherServlet - Error rendering view [org.thymeleaf.spring
  5. 50matches:更准确的搜索引擎
  6. 查询无序列表中第K小元素
  7. 两个MYSQL数据同步的SHELL脚本
  8. WIZnet开源平台ioPlatform所趋,全硬件TCP/IP尽显内芯智慧!
  9. DELL服务器常见报错信息
  10. (转)正则表达之零宽断言(零宽度正预测先行断言)
  11. AI连围棋都可以大胜,何况游戏
  12. linux查看端口出现unix,linux查看端口被占用状况
  13. 让网页附件为Word或Excel的文件,下载时直接弹出下载对话框,而不打开它
  14. vue项目的IE兼容问题
  15. 微信小程序(safair浏览器)flex布局中的坑
  16. 手机照片丢失怎么才能恢复
  17. 【Arduino】PTC热敏电阻的介绍和应用
  18. 【archlinux】安装系统
  19. JS获取IP地址,登录地点的方法
  20. JS中script标签defer和async属性的区别

热门文章

  1. TFTP服务器的使用
  2. 基于STM32的中文字库解码
  3. Info.plist信息
  4. 这一年,这些书:2020年读书笔记
  5. 请大家帮忙,帮我看一下.net的这个问题
  6. 《程序设计导引及在线实践》学习
  7. 易用性软件测试用例,软件性能测试规定——易用性测试规定
  8. 六万字最全总结Java数据库编程MyBatis(+收藏)
  9. Fiddler4安装与配置_偷懒的肥猫
  10. SVN安装和使用详细教程