谷歌浏览器驱动_用selenium模拟浏览器爬取各高校研究生院网址

一、前言

目前考研分数出炉,有人欢喜有人悲。成绩不理想的同学只能大量搜索调剂信息,而各大高校研究生院会将调剂信息以及预调剂信息发放在官网上,将各大高校研究生院网址汇总也算为广大考研学子尽一份力。

二、selenium简介

1、简介

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器。

2、下载selenium和google driver

selenium可以通过pip install selenium安装

这里的关键点也是很容易失败的一点就是要保证 chromewebdriver与谷歌浏览器版本的一致性 ,大家可以参照这个网址 https://blog.csdn.net/ping523/article/details/54963477 来查看与谷歌浏览器的版本想对应的webdriver,这里要尤为注意

2、下载完成后解压,将chromewebdriver 放在与谷歌浏览器快捷方式相同目录下

9d5b5b63bc912f31e14eaab33e37f3b9.png

三、代码

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pandas as pd

def get_content():
    url="http://daxue.eol.cn/211.shtml"
    headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'}
    re=requests.get(url,headers=headers)
    print(re.status_code)
    return re.content

def get_name(content):
    soup=BeautifulSoup(content,'lxml')
    table=soup.find("table")
    td=table.find_all("td")
    a=[]
    for each in td:
        a.append(each.a)
    a=list(filter(None,a)) 
    name=[]
    for each in a:
        if(each.text!='2018年各省录取分数线'):
            name.append(each.text)
    return name

def get_url(names):
    """
    names为各个高校的名称
    """
    chromedriver = r"C:Program Files (x86)GoogleChromeApplicationchromedriver.exe" #这里是你的驱动的绝对地址
    browser = webdriver.Chrome(chromedriver) #驱动器
    browser.get(url='https://www.baidu.com') #获取网页
    time.sleep(2)
    url=[]
    #获取搜索框
    input = browser.find_element_by_css_selector('input#kw')  #value为ID选择器
    #对列表中每一个大学,获得研究生院url
    for name in names: 
        submit = input.send_keys(name)
        time.sleep(2)
        #点击提交按钮
        button = browser.find_element_by_css_selector('input#su')
        button.click()
        time.sleep(10)
        result=browser.find_element_by_css_selector('h3 > a')  #获得第一个搜索结果
        href=result.get_attribute('href') #获得元素
        url.append(href)
        input.clear()
    browser.close()
    return url

con=get_content()
name=get_name(con)
name_yz=[]
for each in name:
    name_yz.append(each+'研究生院')
    
url=get_url(name_yz)

data=pd.DataFrame({
    'name':name,'url':url})

data.to_csv('各大高校研究生院网址.csv',encoding='utf_8_sig')

f29e143b5ff473fda1e6ca26f8e8ec98.png

四、爬取信息如下:

0

清华大学

http://www.baidu.com/link?url=o5VlyHIqlLdD58EaLWsB1JYYpK6QkYyy9pMUZOmD3hhdZ0t5woHE-Dx1CwQejx8_

1

北京大学

http://www.baidu.com/link?url=_3vI5SePcgS3yJAF5FEpvYAKXgFN2AvBdHi0H5Smco4QT8Vb9Hf0-86MMaXFi-5r

2

中国人民大学

http://www.baidu.com/link?url=LH1PIbTU1hvGBJ_ZptOBfQt7l7vLSd1xHrO0oVMAJeC

3

北京交通大学

http://www.baidu.com/link?url=xJLgwNvYVPBL-FKi4c4MgRNxmYVHobuqMpnqVlXwjtau7XSUPlAF1RqlK3HzDmEY

4

北京工业大学

http://www.baidu.com/link?url=kbFNP9eHWRVvfqjH9n_SI3PQLua2TKnkrgpq0OleKQNivY3awF8R4wz19Lap2RcE

5

北京航空航天大学

http://www.baidu.com/link?url=gwO5g9UO0E0r4Mwf6Y0qX1KjpmcTwiAkiQ1L2PsCsgFzWaJVI6EgLJGj5JPFXWwC

6

北京理工大学

http://www.baidu.com/link?url

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值