python爬虫类型_Python爬虫:爬取国内所有高校名称、类型、官网
本博客仅用于技术讨论,若有侵权,联系笔者删除。
此次的目的是爬取国内高校的基本信息,并按省份存储。爬取的黄页是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爬虫:爬取国内所有高校名称、类型、官网相关推荐
- python京东购买_python大规模爬取京东
python大规模爬取京东 主要工具 scrapy BeautifulSoup requests 分析步骤 打开京东首页,输入裤子将会看到页面跳转到了这里,这就是我们要分析的起点 我们可以看到这个页面 ...
- python批量评论_python批量爬取京东手机评论信息及星级
本科生在读,如有问题欢迎指正 爬取京东评论信息:评论信息是动态加载的,所以在商品详情页不能直接爬取评论. 下面以一款手机为例,详细介绍python批量爬取京东评论. 找到评论区域 image.png ...
- python四级成绩_python 批量爬取四级成绩单
使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件--含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...
- python登录网页_Python如何爬取需要登录的页面
用Cookies保存登录状态实现部分反反爬机制 使用cookies:直接将cookies信息放入到headers中 直接封装cookies ,然后requests.请求(cookies = { ...
- python爬虫影评_Python爬虫(二十)_动态爬取影评信息
本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...
- python爬去百度百科词条_Python爬虫入门学习实践——爬取小说
本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...
- python多线程爬取段子_Python爬虫实战之一秒爬取内涵段子
人生苦短,我用Python,今天来一起爬取一下内涵段子. 话不啰嗦直接代码,gogogog! #coding=utf-8 import urllib2 import re class Spider: ...
- Python爬虫实例:爬取国内所有医院信息
本博客仅用于技术讨论,若有侵权,联系笔者删除. 此次的目的是爬取国内医院的基本信息,并按省份存储.爬取的黄页是医院列表.以下是结果图: 一.初始化数据 初始化基本的数据,包括global变量,省份名称 ...
- python从网址爬图片协程_Python爬虫多任务协程爬取虎牙MM图片
查看: 4420|回复: 241 [作品展示] Python爬虫多任务协程爬取虎牙MM图片 电梯直达 发表于 2019-4-17 21:35:47 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结 ...
最新文章
- abaqus二次开发python 建立集合,ABAQUS二次开发-Python脚本运行方式
- 系列文章丨AlphaGo Zero为何如此备受瞩目?8位教授的独家讲解
- 解决Sublime包管理package control 报错 There are no packages available for installation
- sigmoid函数(Logistic函数)
- boost::python模块实现使用原始指针访问数据的示例
- php多主写数据,多数据库的配置(从主)
- GPU Gems1 - 9 有效的阴影体渲染
- vue koa2即时聊天,实时推送比特币价格,爬取电影网站
- 一本通1629聪明的燕姿
- MyBatis-Plus_分页查询
- 解决ie8及低版本浏览器不支持html5标签属性
- 《c++ const 详细总结》--转载
- HTML5 绘制动画
- js去除字符串空格(空白符)
- 福利:阿里云免费试用劵
- python读取txt文本出现中文乱码已解决。
- Games104现代游戏引擎入门-lecture12游戏引擎的粒子和声效系统
- 粗糙的量刑模型-随机森林算法
- 2022湖南最新消防设施操作员模拟试题题库及答案
- 《找对英语学习方法的第一本书》