本博客仅用于技术讨论,若有侵权,联系笔者删除。

此次的目的是爬取国内高校的基本信息,并按省份存储。爬取的黄页是http://www.gx211.com/gxmd/gx-bj.html。以下是结果图:

一、初始化数据

初始化基本的数据,包括global变量,省份名称等等。

from bs4 import BeautifulSoup

from selenium import webdriver

import pandas as pd

import requests

import csv

from string import digits

#初始化

def init():

global url, headers, province_name, province_url_address, driver

url = 'http://www.gx211.com/gxmd/'

province_name = [

'北京', '天津', '河北', '山西', '辽宁', '吉林', '黑龙江', '上海',

'江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北',

'湖南', '广东', '内蒙古', '广西', '海南', '重庆', '四川', '贵州',

'云南', '新疆', '陕西', '甘肃', '青海', '宁夏', '新疆'

]

headers = {

'Cookie':'acw_tc=7b39758215646241450881184e8baf04d936a25ea3fe3414443e15b0efc3ba; UM_distinctid=16c4addcb52784-087525bdc71e12-c343162-13c680-16c4addcb53826; Hm_lvt_afa8c15093ebdca7a48e7d4be02e164b=1564625709; CNZZDATA2098941=cnzz_eid%3D1427590086-1564621705-null%26ntime%3D1564731169; acw_sc__v2=5d43f50ababce2fa803faca1fcf442c3ce835610; acw_sc__v3=5d43f50bdb92af42b7fe3555b33740a6e4202b94',

'Host':'www.gx211.com',

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'

}

province_url_address = []

driver = webdriver.Chrome()

driver.implicitly_wait(30)

二、获取各省的URL

由网页得知,其各省的数据在不同的html。所以先获取各省的URL,再分别对每个省进行操作。

#获取各省链接

def province_url():

r = requests.get('http://www.gx211.com/gxmd/gx-bj.html',headers=headers,timeout=10)

print(r.text)

soup = BeautifulSoup(r.text, "lxml")

# 非法URL 1

invalidLink1='#'

# 非法URL 2

invalidLink2='javascript:void(0)'

for k in soup.find_all('a', target = '_self'):

link=k.get('href',)

if(link is not None):

#过滤非法链接

if link==invalidLink1:

pass

elif link==invalidLink2:

pass

elif link.find("javascript:")!=-1:

pass

else:

province_url_address.append(link)

三、保存省的高校数据

由于每个省的高校数据是以table的形式存放在网上,所以笔者直接用pandas将table转化为excel的形式存储。

#保存当前省份的数据

def sav_province_school_data(now_province_url, now_province_name):

#school_attributes = ['本科', '专科', '独立', '民办']

#i = 0

#for tb in pd.read_html(url+now_province_url):

# tb.to_csv('./高等院校官网爬虫数据/'+now_province_name+'_'+school_attributes[i]+'.csv', mode='a', encoding='GBK', header=0, index=0)

# i = i + 1

new_url = url+now_province_url

driver.get(new_url)

tab = driver.find_element_by_class_name("WrapContent")

tab_html = tab.get_attribute('outerHTML')

tab_dfs = pd.read_html(tab_html)

# tb = tab_dfs[0]

# tb.to_csv('./高等院校官网爬虫数据/'+now_province_name+'_本科.csv', mode='a', encoding='GB18030', header=0, index=0)

tb = tab_dfs[0]

tb.to_excel('./高等院校官网爬虫数据/'+now_province_name+'_本科.xlsx', sheet_name='data')

data_clean('./高等院校官网爬虫数据/'+now_province_name+'_本科.xlsx')

tb = tab_dfs[1]

tb.to_excel('./高等院校官网爬虫数据/'+now_province_name+'_专科.xlsx', sheet_name='data')

data_clean('./高等院校官网爬虫数据/'+now_province_name+'_专科.xlsx')

tb = tab_dfs[2]

tb.to_excel('./高等院校官网爬虫数据/'+now_province_name+'_独立.xlsx', sheet_name='data')

data_clean('./高等院校官网爬虫数据/'+now_province_name+'_独立.xlsx')

tb = tab_dfs[3]

tb.to_excel('./高等院校官网爬虫数据/'+now_province_name+'_民办.xlsx', sheet_name='data')

data_clean('./高等院校官网爬虫数据/'+now_province_name+'_民办.xlsx')

四、清洗数据

由于直接用pandas转化,所以在高校名称的列,名称还包括了编号和985.211等信息。这些都不是笔者想要的所以再写一个清洗函数。

#清洗函数

def data_clean(province):

data = pd.read_excel(province, sheet_name='data')

#data[0] = re.search(r'^[0-9]* (.*?)(211(.985)?)?$', data[0])

new_data = []

for i in range(1, len(data[0])):

remove_digits = str.maketrans('', '', digits)

data[0][i] = data[0][i].translate(remove_digits)

data[0][i] = data[0][i].replace('.','')

data.to_excel(province,sheet_name='data')

五、主函数

主函数则负责整个逻辑,包括对各省的循环操作。

#主函数

if __name__ == '__main__':

init()

province_url()

i = 0

print(province_url_address)

for pro_url in province_url_address:

sav_province_school_data(pro_url, province_name[i])

i = i + 1

python爬虫类型_Python爬虫:爬取国内所有高校名称、类型、官网相关推荐

  1. python京东购买_python大规模爬取京东

    python大规模爬取京东 主要工具 scrapy BeautifulSoup requests 分析步骤 打开京东首页,输入裤子将会看到页面跳转到了这里,这就是我们要分析的起点 我们可以看到这个页面 ...

  2. python批量评论_python批量爬取京东手机评论信息及星级

    本科生在读,如有问题欢迎指正 爬取京东评论信息:评论信息是动态加载的,所以在商品详情页不能直接爬取评论. 下面以一款手机为例,详细介绍python批量爬取京东评论. 找到评论区域 image.png ...

  3. python四级成绩_python 批量爬取四级成绩单

    使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件--含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...

  4. python登录网页_Python如何爬取需要登录的页面

    用Cookies保存登录状态实现部分反反爬机制 使用cookies:直接将cookies信息放入到headers中 直接封装cookies    ,然后requests.请求(cookies = {  ...

  5. python爬虫影评_Python爬虫(二十)_动态爬取影评信息

    本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...

  6. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说

    本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...

  7. python多线程爬取段子_Python爬虫实战之一秒爬取内涵段子

    人生苦短,我用Python,今天来一起爬取一下内涵段子. 话不啰嗦直接代码,gogogog! #coding=utf-8 import urllib2 import re class Spider: ...

  8. Python爬虫实例:爬取国内所有医院信息

    本博客仅用于技术讨论,若有侵权,联系笔者删除. 此次的目的是爬取国内医院的基本信息,并按省份存储.爬取的黄页是医院列表.以下是结果图: 一.初始化数据 初始化基本的数据,包括global变量,省份名称 ...

  9. python从网址爬图片协程_Python爬虫多任务协程爬取虎牙MM图片

    查看: 4420|回复: 241 [作品展示] Python爬虫多任务协程爬取虎牙MM图片 电梯直达 发表于 2019-4-17 21:35:47 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结 ...

最新文章

  1. abaqus二次开发python 建立集合,ABAQUS二次开发-Python脚本运行方式
  2. 系列文章丨AlphaGo Zero为何如此备受瞩目?8位教授的独家讲解
  3. 解决Sublime包管理package control 报错 There are no packages available for installation
  4. sigmoid函数(Logistic函数)
  5. boost::python模块实现使用原始指针访问数据的示例
  6. php多主写数据,多数据库的配置(从主)
  7. GPU Gems1 - 9 有效的阴影体渲染
  8. vue koa2即时聊天,实时推送比特币价格,爬取电影网站
  9. 一本通1629聪明的燕姿
  10. MyBatis-Plus_分页查询
  11. 解决ie8及低版本浏览器不支持html5标签属性
  12. 《c++ const 详细总结》--转载
  13. HTML5 绘制动画
  14. js去除字符串空格(空白符)
  15. 福利:阿里云免费试用劵
  16. python读取txt文本出现中文乱码已解决。
  17. Games104现代游戏引擎入门-lecture12游戏引擎的粒子和声效系统
  18. 粗糙的量刑模型-随机森林算法
  19. 2022湖南最新消防设施操作员模拟试题题库及答案
  20. 《找对英语学习方法的第一本书》

热门文章

  1. Python:9行代码制作聊天机器人
  2. 浙江大学计算机学院足球队,浙江大学2021年“三好杯”足球赛圆满结束
  3. 数学建模matlab 优化模型,数学建模实验中三种优化模型的分析
  4. 激光感知(八):计算目标最小凸多边形及航向角
  5. 功能核磁共振影像分析AFNI教程(2)
  6. 【再读第六版PMBOK】第一章 引论
  7. eplan 电箱布局_基于Eplan的电柜三维布线的应用
  8. 洞察数字城市——监控易雪亮工程智慧运维
  9. 伺服电机概念原理介绍
  10. [信息论与编码] 04. 熵的基本性质