院校链接
目前一共爬取到2727所学校,爬取时间可能需要1~2分钟(主要耗时在请求网页中),爬取结果存放到csv文件中。
编写代码中遇到一个小问题,由于获取到网页中的数据较多,我在pycharm打印内容时,pycharm竟然没有显示完全,弄得我以为一直没有捕捉到关键数据(表格中的数据),然后我将数据全部写入文件中,在文件中才找到,证明数据确实获取到,但是可能pycharm某些设置,导致没有显示出来。这个问题搞了半天,起初在写到文件中,在macOS上的文本编辑有毒,一直给我显示网页样的格式,看不见原始的文本,后来用sublime才看见。吐槽macOS文本编辑器打开稍微大一点的数据就需要加载5~6秒,用sublime都是秒开。
Python 2.7
相关库安装:
sudo pip install requests
sudo pip install BeautifulSoup
import requests
import BeautifulSoup
import sys
import csv
url = 'https://gaokao.chsi.com.cn/sch/search.do'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) ' \
'AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 ' \
'Safari/605.1.15'
head = ['院校名称', '院校所在地', '院校隶属', '院校类型', '学历层次', '院校特性', '研究生院', '满意度']
def get_university_info(page):
payload = {'start': page}
headers = {'User-Agent': user_agent}
r = requests.get(url=url, headers=headers, params=payload)
print r.url
soup = BeautifulSoup.BeautifulSoup(r.text)
data = []
rawdata = soup.find('table')
thlist = rawdata.findAll('th')
for th in thlist:
text = th.getText()
head.append(text)
# print head
trlist = rawdata.findAll('tr')
for tr in trlist:
tdlist = tr.findAll('td')
record = []
for td in tdlist:
content = td.getText()
if content == '':
# print 1
record.append('1')
continue
if content == '':
# print 0
record.append('0')
continue
if '&ensp' in content:
# print content.replace(' ','')
record.append(content.replace(' ', ''))
continue
# print content
record.append(content)
data.append(record)
return data
def save():
with open('china_university.csv', mode='w') as f:
fd = csv.writer(f)
fd.writerow(head)
try:
for page in range(0,2740,20):
data = get_university_info(page=page)
for c in data:
if c:
fd.writerow(c)
except KeyboardInterrupt:
print 'stop!'
def main():
reload(sys)
sys.setdefaultencoding('utf-8')
save()
if __name__ == '__main__':
main()