南开大学python爬虫_python爬虫之教务处成绩

学习过程

这次作业主要是python爬虫,由于之前并没有接触过这个东西,所以我先到网上简单地学习了一下python语言,具体的学习网站python基础教程-菜鸟教程

操作部分

安装环境:pycharm编程环境+anaconda包集+selenium库+phantomJS无界面爬虫浏览器

在pycharm中新建.py文件开始编程。

导入部分:

from selenium import webdriver #导入部分

from bs4 import BeautifulSoup

import xlwt#制成excel表格的一个库

import string

phantomjs_path='C:UsersmazhuangDesktopWorkshopphantomjs-2.1.1-windows/bin/phantomjs.exe' #加载浏览器驱动,无界面爬虫浏览器在电脑中的路径

driver = webdriver.PhantomJS(phantomjs_path)

打开网页:

URL = '目标网址' #网页地址,即你所要抓取数据的网页

driver.get(URL)#返回网页地址

driver.implicitly_wait(10)#设置隐式等待时长

模拟登陆:

首先,要进行元素的定位。

单个元素定位:

find_element_by_id

find_element_by_name

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector

多个元素定位:

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

其中,id,name,xpath等都是要从网页那里通过检查元素的得到的标签。比如说,要模拟登陆首先要进行网页上学号和密码输入框的定位,此时,用浏览器打开目标网页,右键单击要输入学号的地方,检查源,得到其id,name等信息在运用上边提到的函数进行元素定位。

页面的交互,我主要用到了这两个函数:

click()//模拟鼠标的左键点击

send_key(value)//类似于键盘传输值的信息

submit()//模拟提交

如:要进行学号的输入:

driver.find_element_by_id("textfield").send_keys('学号')//textfiled即为通过定位元素扎到的标签,用send_key(value)将学号信息传输过去

要进行历史成绩查询的点击:

driver.find_element_by_link_text('历史成绩查询').click()//这里主要演示click的用法,submit()用法类似

用BeautifulSoup来抓取解析自己所需要的信息:

lscj = driver.find_element_by_id('undefined').get_attribute("innerHTML")#找到要抓取的模块

Soup = BeautifulSoup(lscj, 'lxml')

可以用print Soup pretiffy()来运行一下看是不是自己需要的信息。

将抓取到的信息写进excel表格

首先要引入xlwt库

import xlwt

excel的写入

exl = xlwt.Workbook(encoding='utf-8',style_compression=0)//创建用于写excel的exl对象其中encoding=‘utf-8’是防止解析出来的中文乱码

sheet = exl.add_sheet('mazh', cell_overwrite_ok=True)//创建表单,并且声明为可以覆盖

然后,通过sheet.write(列,行,内容)语句将所抓取的数据写进去。在进行数据写入的时候需要先找到要录入表格元素的标签,然后通过循环语句将要写入的数据写进表格。找到元素标签,主要运用这个语句:

Soup.find_all('标签名称')

用 变量.string 来获取该处的内容

别忘了用.decode(‘utf-8’)来解码。

最后保存

exl.save("文件名.xls")

遇到的问题:

(1)一开始,对一些定位元素的函数不会用,于是我就搜了一些运用这些函数的实例,这个实例运用推荐给大家定位元素算法的实例运用

(2)对将信息写入excel表格毫无头绪,于是就搜了一下这个网站python爬虫excel的读写

(3)一开始所保存的表格出来是乱码的,在问了同学之后,用decode(‘utf-8’)先解码再打印就好了。

还未解决的问题

由于我的成绩有22条,而页面上显示了20条,需要将页面显示数设置成50,我尝试用了各种方法,都没有成功,虽然并没有报错,但是页面效果并无反应。关于下拉框选择我尝试的方法如下网页1网页2

感悟及体会

之前没有接触过python,所以对于很多东西都无从下手,但是在自我摸索的过程中,虽然很费时费力,但是真正自学到东西还是蛮开心的,再者,就是对于自己一些连方法都看不懂的语句,要多找一些例子来看一下,在例子中更能理解其如何运用。等自己真正把这件事做出来的时候,就会觉得,其实也没什么难得。

最后十分感谢,在我自己实在摸索不出来的时候,肖同学对我的帮助,在这里推荐一下她的博客,博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值