HTML5技术

python动态网页爬

字号+ 作者:H5之家 来源:H5之家 2016-02-13 10:02 我要评论( )

需求: 四六级成绩查询网站我所知道的有两个:学信网()和99宿舍(),这两个网站采用的都是动态网页。我使用的是学信网,好了,网站截图如下: 网站的代码如下: 准考证号:请输入15位准考证号姓名:姓名超过3个字,可只输入前3个 由图中可以看出表单提交

需求:

  四六级成绩查询网站我所知道的有两个:学信网()和99宿舍(),这两个网站采用的都是动态网页。我使用的是学信网,好了,网站截图如下:

                                                        

网站的代码如下:

准考证号:请输入15位准考证号姓名:姓名超过3个字,可只输入前3个

由图中可以看出表单提交的链接为/cet/query,即:,好了,填写表单和结果如下:

     

                     

 

但是,点击查看源代码之后发现,没有成绩,即代码仍是上面那个,之后按F12查看代码:

1 <TBODY><TR> 2 <TH>姓名:</TH> 3 <TD>XXXX</TD></TR> 4 <TR> 5 <TH>学校:</TH> 6 <TD>XXXXXX</TD></TR> 7 <TR> 8 <TH>考试类别:</TH> 9 <TD>英语四级</TD></TR> 10 <TR> 11 <TH>准考证号:</TH> 12 <TD>120135151100101</TD></TR> 13 <TR> 14 <TH>考试时间:</TH> ><SPAN class=colorRed>403 </SPAN><BR><SPAN class=color666>听力:</SPAN> 132 <BR><SPAN class=color666>阅读:</SPAN> 147 <BR><SPAN class=color666>写作与翻译:</SPAN> 124 </TD></TR>

该代码显示了成绩,可以知道,该网站使用的是动态网页,用的JavaScript或者Ajax.js还是其他的我就不知道了0.0。上面为需求。

 

  前言:使用过BeautifulSoup爬取过,但是BeautifulSoup是爬取不了动态网页的,上各种论坛找各种资料,用了n种东西,scapy,pyqt等等,走了真心不少弯路,不是不行,应该是我不会用,最终用了selenium和phantomjs,这两个应该也是目前最流行的爬虫模块了吧。

一、导入selenium和phantomjs

  

1 from selenium import webdriver ) 4 driver.get(url) ).send_keys(i) ).send_keys(xm) )[1].submit()

  代码说明:

  3.selenium可以加载很多驱动,比如Chrome、FireFox等,这里需要有这两个浏览器和驱动才行,折腾了一下,网上说Phantomjs是较好的了

  5、6、7分别是准考证号,姓名和提交

二、字符处理

提交之后就可以直接查找了:

).text ).text

  代码说明:

  1.查看姓名

  2.查看分数及其具体成绩

  打印之后为:

姓名 403 听力 132 阅读 147 写作 142

  之后要对分数进行字符串处理,选取各部分的数字,这里我们采用re模块:

1 import re , chuli2)

  其中m是数组,输出的是["403","132","147","142"]

三、数据库

  我们学校也不知说很渣还是人性化,反正公布了全校的四六级准考证号,当然,是excel的,需要导入mysql数据库,打开Excel之后,我发现微软大法和Oracle真是牛逼啊,Excel365居然有mysql workbench连接部分

 数据库代码如下:

1 import MySQLdb , user=, passwd=, db=, port=3306, charset=) 4 cur = conn.cursor() 5 curr = conn.cursor() % i) 7 xm = cur.fetchone()[0] + xm % ( 10 ss, m[0], m[1], m[2], m[3], i) 11 cur.execute(sqltxt) 12 conn.commit() 13 cur.close() 14 conn.close()

  代码说明:

  3.python连接数据库代码

  6.连接数据库取得姓名部分

  9.这行我好无语啊,使用‘“+ss+”’这样的写法一直报错,最终找了半天资料,这个写法我不太喜欢,但是凑合着用吧。

  12.记得一定要提交事务!!!commit()!!!不然是没有效果的

四、使用代理服务器(保留以后写)

  运行了一段时间之后,大概抓了几百人的吧,然后就出现要求验证码了,解决办法只能处理验证码或者使用代理服务器了,这部分继续加强学习再弄出来了↖(^ω^)↗

五、源代码和效果

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 网页适应所有屏幕宽度 - 侧耳倾听一场梦

    网页适应所有屏幕宽度 - 侧耳倾听一场梦

    2017-04-22 10:00

  • 网页版扫雷游戏 - 季末的寂寞

    网页版扫雷游戏 - 季末的寂寞

    2017-04-21 13:00

  • 基于CSS的个人网页 - 汕大-吴广林

    基于CSS的个人网页 - 汕大-吴广林

    2017-04-21 12:00

  • Omi应用md2site-0.5.0发布-支持动态markdown拉取解析 - 【当耐特】

    Omi应用md2site-0.5.0发布-支持动态markdown拉取解析 - 【当耐特】

    2017-03-16 11:03

网友点评
0