【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦
2.基本流程就是:
用request爬取一个页面之后用BeautifulSoup4对爬到的页面进行处理,
然后需要的东西进行预处理之后存到桌面上的.txt文件里,
之后再对.txt文件里的字符串进行分割,
最后把数据存到excel表里
3.准备:需要下载安装requests库,以及BeautifulSoup4的库,还有xlsxwriter库,相关安装方法网上一大堆
4.爬取页面的网页源代码:
5.将爬取的数据存到.txt文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | from bs4 import BeautifulSoup import requests import os def get_soup(): r = requests. get ( "http://www.eol.cn/html/g/gxmd/bj/" , timeout=30) # 判断网络链接的状态,连接错误将产生一个异常 #print(r.status_code) r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text,features= "html.parser" ) return soup; #删除前几个元素 def del_previous_ele(full_list): for i in range(8): full_list.remove(full_list[0]) return full_list; #获取学校名称,学校编号,主管部门,办学层次 def select_school_ele(full_list): school_list = [] for i in range(full_list.__len__()): //这里是对获取的所有学校列表进行遍历,取出需要的数据 if (i % 7) == 1 or (i % 7) == 2 or (i % 7) == 3 or (i%7) == 5 : school_list.append(full_list[i]. string + "\t" ) //获取到一个学校完整的信息之后就在后面换行 if (i%7) == 5: school_list.append( " \n" ) else : pass return school_list; #将数据写入文件 def createFile(txt): file = open( 'C:\\Users\\XXXXXXXXXXXXXXX\\Desktop\\school.txt' , 'w' ) file.writelines(txt) file.close(); print( "写入成功" ) if __name__ == "__main__" : soup = get_soup() full_list = del_previous_ele(soup.find_all(align= "center" )) school_list = select_school_ele(full_list) createFile(school_list) |
6.对school.txt文件进行处理,处理完了存到excel文件里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import os import xlsxwriter def get_file(path,mode_): list = "" ; file = open(path,mode_) list = file.read() file.close() return list def write_excel(list): workbook = xlsxwriter.Workbook( "C:\\Users\\XXXXXXXXXXXXXXXXX\\Desktop\\school.xlsx" ) worksheet = workbook.add_worksheet( "school" ) #5个属性为一组 list_5_item = list.split( "\n" ) # print(len(list_5_item)) for i in range(len(list_5_item)): specific_school = list_5_item[i].split( "\t" ) print(len(specific_school)) for j in range(len(specific_school)): worksheet.write( i , j , specific_school[j]) if __name__ == "__main__" : list = get_file( 'C:\\Users\\XXXXXXXXXXXXXXXXXXXXXXXXXXXx\\Desktop\\new.txt' , 'r' ) write_excel(list) |
7.完成结果:
文本文件:
school.xlsx文件:
本文来自博客园,作者:你啊347,转载请注明原文链接:https://www.cnblogs.com/LinKinSJ/p/9501168.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律