爬取网站:http://www.xuexiaodaquan.com/ 学校大全

技术路线: requests + BeautifulSoup

貌似这个网站反爬虫还挺牛的,经常就返回自动跳入的139网站,随意得换着IP试试

需要准备中国市名称拼音存在EXCEL中,显示是第一列:市民;第二列:拼音;到市级就可以。

需要挖掘哪些城市就放哪些,如果挖全国,就要放所有市名。

如:

输出是一个EXCEL,包括:

城市 类型 学习名称 地址 电话 网址

如:

直接上代码:

from bs4 import BeautifulSoup
import requests
import re
import sys
import xlwt
import xlrd
from xlutils.copy import copy#获取html
def getHtmlText(url, code="GBK"):try:headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36'}r = requests.get(url,headers = headers,timeout = 30)r.raise_for_status()r.encoding = codereturn r.textexcept:return "获取html异常"
#解析地区,返回地区清单
'''
def getGroundList(htext):try:grounddict = {}soup = BeautifulSoup(htext, "html.parser")gdname = soup.find('dl', attrs={'class':'nobackground'})keyList = gdname.find_all('a')for i in range(1,len(keyList)):key = keyList[i].textval = keyList[i].get('href')grounddict[key] = valreturn grounddictexcept:print("getGroundList异常")
'''
#解析页码
def getPageCode(htext,typeitem):   try:soup = BeautifulSoup(htext, "html.parser")s1 = soup.find('a', attrs={'class':'last'})if (s1):pat = re.compile(typeitem + r'pn([0-9]+).html')if(s1.get('href')):code = pat.search(s1.get('href'))if(code):return code.group(1)else:return 0except:print("getPageCode异常")#解析学校信息,返回学校名称、地址、电话、网址
def getSchoolList(htext,fileAddress,cityitem,typeitem):try:schoolDict = {}soup = BeautifulSoup(htext, "html.parser")sclist1 = soup.find_all('dl',attrs={'class':'left'})sclist2 = soup.find_all('dl',attrs={'class':'right'})sclist = sclist1 + sclist2for item in sclist:schoolDict['城市'] = cityitemschoolDict['类型'] = typeitemschoolDict['学习名称'] = item.find('p').textsl = item.find_all('li')schoolDict['地址'] = sl[0].textschoolDict['电话'] = sl[1].textschoolDict['网址'] = sl[2].text#f = open(fileAddress, 'a', encoding='utf-8')#f.write(str(schoolDict)  + '\n' )savefile(schoolDict,fileAddress)except:print("getSchoolList异常")#保存到excel
def savefile(schoolDict,fileAddress):workbook = xlrd.open_workbook(fileAddress,'w+b')sheet = workbook.sheet_by_index(0)wb = copy(workbook)ws = wb.get_sheet(0)rowNum = sheet.nrowsws.write(rowNum,0,schoolDict['城市'])ws.write(rowNum,1,schoolDict['类型'])ws.write(rowNum,2,schoolDict['学习名称'])ws.write(rowNum,3,schoolDict['地址'])ws.write(rowNum,4,schoolDict['电话'])ws.write(rowNum,5,schoolDict['网址'])wb.save(fileAddress)#获取城市列表,城市由EXCEL文件存储
def getCityList():try:cityFileAddress = r'D:\中国省市名称拼音.xls'file = xlrd.open_workbook(cityFileAddress)sheet = file.sheet_by_name('city')cityDic = {}for i in range(sheet.nrows):key = sheet.col_values(0)[i]value = sheet.col_values(1)[i].lower()cityDic[key] = valuereturn cityDicexcept:print("getCityList失败")def main():cityList = getCityList()typeList = {'小学':'/xiaoxue/','初中':'/chuzhong/','高中':'/gaozhong/'}for cityitem in cityList:for typeitem in typeList:searchUrl = 'http://'+ cityList[cityitem] + '.xuexiaodaquan.com'fileAddress = 'D:/school.xls'htext = getHtmlText(searchUrl+typeList[typeitem])getSchoolList(htext,fileAddress,cityitem,typeitem)pagecode = int(getPageCode(htext,typeList[typeitem]))if pagecode != 0:for i in range(2,pagecode+1):h1text = getHtmlText(searchUrl+typeList[typeitem]+'pn'+str(i)+'.html')getSchoolList(h1text,fileAddress,cityitem,typeitem)main()

Python爬数据之全国中小学信息相关推荐

  1. python爬取旅游信息_用Python爬取了全国近5000家旅游景点,分析国庆去哪玩

    2020 国庆马上就要到了 我想今年大家在家都憋坏了 今年国庆和中秋刚好又是同一天,加起来有 8 天假 这么长的假期,当然是出去 玩玩玩! 但是每次长假期间,你有没有想起被人山人海支配的恐惧呢? 那么 ...

  2. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  3. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  4. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  5. 用Python爬取了全国近5000家旅游景点,分析国庆去哪玩

    双节同庆,小长假如约而至 我想今年大家在家都憋坏了 这么长的假期,当然是出去 玩玩玩! 每当长假的时候,有没有想起被人山人海支配的恐惧! 该去哪些地方呢? 我用 Python 爬取了全国近 5000 ...

  6. Python爬取药监局化妆品管理信息发现的问题

    Python爬取药监局化妆品管理信息 **1.json格式本质上是字符串!!! 今天在爬取国家药监局化妆品管理信息的时候,发现"json数据本质上是字符串",以前我还以为json本 ...

  7. 国庆去哪玩?用Python爬取了全国5000家旅游景区(记得收藏)

    2020 国庆马上就要到了 我想今年大家在家都憋坏了 今年国庆和中秋刚好又是同一天,加起来有 8 天假 这么长的假期,当然是出去 玩玩玩! 但是每次长假期间,你有没有想起被人山人海支配的恐惧呢? 那么 ...

  8. Python 爬取拉勾招聘信息

    Python 爬取拉勾招聘信息 故事背景 最近有个好哥们啊浪迫于家里工资太低,准备从北方老家那边来深圳这边找工作,啊浪是学平面设计的知道我在深圳这边于是向我打听深圳这边平面设计薪资水平,当时我有点懵逼 ...

  9. 国庆小长假来点不一样的,如何用Python爬取了全国近5000家旅游景点,一起来看

    2020 国庆马上就要到了 我想今年大家在家都憋坏了 今年国庆和中秋刚好又是同一天,加起来有 8 天假 这么长的假期,当然是出去 玩玩玩! 但是每次长假期间,你有没有想起被人山人海支配的恐惧呢? 那么 ...

最新文章

  1. 运营商级网络地址转换(LSN/CGN)方案介绍
  2. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos
  3. 安装了email模块还是报错_科普:利用Python smtplib和email模块实现自动发送邮件功能...
  4. 微软的面试题(超变态但是很经典)
  5. 初识图机器学习(part2)--图数据
  6. 毕业作文计算机系统与维护,修电脑作文600字
  7. SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
  8. Android日常开发总结的技术经验60条 转
  9. 百度App网络深度优化系列《一》DNS优化
  10. Eclipse- 使用记录(1)
  11. 分分钟搞定LabVIEW读取与写入Excel【三易电子工作室】
  12. java动态字段排序_Java利用Stream来实现多字段排序功能
  13. Java游戏服务器系列:传统的BIO(OIO)、NIO与Netty中的BIO(OIO)、NIO
  14. Zemax-偏振、膜层和散射
  15. 手机如何测光照度_另类玩法:手机变身照度计
  16. 【知识蒸馏】什么是知识蒸馏、方法解读
  17. 另类QQ客户端 直接用QQ号登陆 (借花献佛)
  18. 2021长安二中高考成绩查询,陕西33所高中2020年高考数据已公布!速看
  19. 如何在 Web 3领域中工作?
  20. 被拒绝100天 Rejection Therapy 100 Days

热门文章

  1. 我的firefox插件
  2. netapp管理地址_最新NetApp常用管理命令总结
  3. 树莓派激光雷达导航小车底盘的基本操作
  4. Java 接口与多态及基础练习题
  5. 请领导过目文件怎么说_送茶叶给领导,怎么说才能让领导知道茶叶很名贵?
  6. 实现Web上的用户登录功能
  7. hadoop入门程序:词频统计
  8. 证券从业资格准考证可以打印啦
  9. destoon目录文件详细介绍
  10. python 爬虫 免费简历模板