广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python动态网页批量爬取
  • 727
分享到

python动态网页批量爬取

批量动态网页python 2022-06-04 19:06:10 727人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

四六级成绩查询网站我所知道的有两个:学信网(Http://www.chsi.com.cn/cet/)和99宿舍(http://cet.99sushe.com/),这两个网站采用的都是动态网页。我使用的是学信

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

查看图片

网站的代码如下:


<fORM method="get" name="form1" id="form1" action="/cet/query">

<table border="0" align="center" cellpadding="0" cellspacing="0">
<tr><td align="right">准考证号:</td><td align="left"><input name="zkzh" value="112008000463141" id="zkzh" type="text" size="18" maxlength="15" class="input_text input_t_l" /></td>
 <td align="left" class="font12 color666">请输入15位准考证号</td>
</tr>
<tr><td align="right">姓名:</td><td align="left"><input name="xm" value="啊啊" id="xm" type="text" size="18" maxlength="50" class="input_text input_t_l" /></td>
 <td align="left" class="font12 color666">姓名超过3个字,可只输入前3个</td>
</tr>

<tr><td align="center"> </td>
 <td colspan="2" align="left"><input type="submit" id="submitCET" class="btn_blue" value="查询" /></td>
 </tr>
</table>
</form>

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

查看图片

查看图片

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


<TBODY><TR>
<TH>姓名:</TH>
<TD>XXXX</TD></TR>
<TR>
<TH>学校:</TH>
<TD>XXXXXX</TD></TR>
<TR>
<TH>考试类别:</TH>
<TD>英语四级</TD></TR>
<TR>
<TH>准考证号:</TH>
<TD>120135151100101</TD></TR>
<TR>
<TH>考试时间:</TH>
<TD>2015年06月</TD></TR>总分:</TH><TD class=fontBold vAlign="top"><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


from selenium import WEBdriver

driver = webdriver.PhantomJS(executable_path='D:phantomjs-2.1.1-windowsphantomjs.exe')
driver.get(url)
driver.find_element_by_id('zkzh').send_keys(i)
driver.find_element_by_id('xm').send_keys(xm)
driver.find_elements_by_tag_name('form')[1].submit()

代码说明:

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

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

二、字符处理

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


print driver.find_element_by_xpath("//tr[3]/td[1]").text
print driver.find_element_by_xpath("//tr[6]/td[1]").text

代码说明:

  1.查看姓名

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

打印之后为:


姓名
听力
阅读
写作

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


 import re
m = re.findall(r'(w*[0-9]+)w*', chuli2)


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

三、数据库

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

查看图片

数据库代码如下:


import Mysqldb

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='cet', port=3306, charset='utf8')
cur = conn.cursor()
curr = conn.cursor()
cur.execute("select name from cet.cet where zkzh=(%s)" % i)
xm = cur.fetchone()[0]
print "Name is " + xm
sqltxt = "update cet.cet set leibie=(%s),zongfen=(%s),tingli=(%s),yuedu=(%s),xiezuo=(%s) WHERE zkzh=(%s)" % (
  ss, m[0], m[1], m[2], m[3], i)
cur.execute(sqltxt)
conn.commit()
cur.close()
conn.close()

代码说明:

  3.python连接数据库代码

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

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

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

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

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

五、源代码和效果


# encoding=utf8

import MySQLdb
import re
import time

from selenium import webdriver

# connect mysql,get zkxh and xm
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='cet', port=3306, charset='utf8')
cur = conn.cursor()
curr = conn.cursor()
url = 'http://www.chsi.com.cn/cet/query'


def kaishi(i):
 print i,
 print " start"
 try:
 cur.execute("select name from cet.cet where zkzh=(%s)" % i)
 xm = cur.fetchone()[0]
 print "Name is " + xm
 driver = webdriver.PhantomJS(executable_path='D:phantomjs-2.1.1-windowsphantomjs.exe')
 driver.get(url)
 driver.find_element_by_id('zkzh').send_keys(i)
 driver.find_element_by_id('xm').send_keys(xm)
 driver.find_elements_by_tag_name('form')[1].submit()
 driver.set_page_load_timeout(10)
 leibie = driver.find_element_by_xpath("//tr[3]/td[1]").text
 leibie2 = str(leibie.encode("utf-8"))
 ss = ""
 if leibie2.decode("utf-8") == '英语四级'.decode("utf-8"):
  ss = 4
 else:
  ss = 6
 # zongfen = driver.find_element_by_xpath("//tr[6]/th[1]").text
 # print zongfen
 # print "===="
 chuli = driver.find_element_by_xpath("//tr[6]/td[1]").text
 print chuli
 chuli2 = str(chuli.encode("utf-8"))
 m = re.findall(r'(w*[0-9]+)w*', chuli2)
 sqltxt = "update cet.cet set leibie=(%s),zongfen=(%s),tingli=(%s),yuedu=(%s),xiezuo=(%s) WHERE zkzh=(%s)" % (
  ss, m[0], m[1], m[2], m[3], i)
 cur.execute(sqltxt)
 conn.commit()
 print str(i) + " finish"
 except Exception, e:
 print e
 driver.close()
 time.sleep(10)
 kaishi(i)


# for j1 in range(1201351511001, 1201351512154):
for j1 in range(1201351511007, 1201351512154):
 for j2 in range(0, 3):
 for j3 in range(0, 10):
  j = str(j1) + str(j2) + str(j3)
  if str(j2) + str(j3) == "00":
  print "0.0"
  elif str(j2) + str(j3) == "29":
  kaishi(str(j1) + str(j2) + str(j3))
  j4 = str(j1) + "30"
  kaishi(j4)
  else:
  kaishi(j)
print "END!!!"
cur.close()
conn.close()

查看图片

总结Python的字符串处理细节真的很重要,动不动就输出错误,还有IDE的编码不一样,记得还有个系统编码,字符编码,环境编码,数据库编码等等都要一致。

以上就是本文的全部内容,希望对大家的学习有所帮助。

--结束END--

本文标题: python动态网页批量爬取

本文链接: https://www.lsjlt.com/news/15380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python动态网页批量爬取
    四六级成绩查询网站我所知道的有两个:学信网(http://www.chsi.com.cn/cet/)和99宿舍(http://cet.99sushe.com/),这两个网站采用的都是动态网页。我使用的是学信...
    99+
    2022-06-04
    批量 动态网页 python
  • Python静态网页爬取:批量获取高清壁
    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1、打开壁纸网页 2、单击壁纸图(打开指定壁纸的页面) 3、选择分辨率(我们要下载高清的图) 4、保存图片 实际...
    99+
    2023-01-31
    静态 批量 网页
  • 怎么利用Python批量爬取网页图片
    你可以使用Python的requests库来发起HTTP请求,并使用BeautifulSoup库来解析HTML文档以获取图片的URL...
    99+
    2023-09-27
    Python
  • nodejs怎么爬取动态网页
    要爬取动态网页,可以使用Node.js的一些库和工具,如Puppeteer、Cheerio和Axios。下面是一个使用这些工具的示例...
    99+
    2023-08-15
    nodejs
  • python批量爬取文档
      最近项目需要将批量链接中的pdf文档爬下来处理,根据以下步骤完成了任务: 将批量下载链接copy到text中,每行1个链接; 再读txt文档构造url_list列表,利用readlines返回以行为单位的列表; 利用str的rstr...
    99+
    2023-01-30
    批量 文档 python
  • python爬取动态网页的方法是什么
    Python爬取动态网页的方法有以下几种:1. 使用Selenium库:Selenium是一个自动化测试工具,可以模拟浏览器操作,包...
    99+
    2023-09-15
    python
  • Python 基于Selenium实现动态网页信息的爬取
    目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人...
    99+
    2022-11-12
  • python如何爬取智能翻页批量下载文件
    这篇文章主要介绍python如何爬取智能翻页批量下载文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开...
    99+
    2023-06-14
  • python爬虫怎么批量爬取百度图片
    这篇文章将为大家详细讲解有关python爬虫怎么批量爬取百度图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
  • Python 爬取网页中JavaScri
    当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息。但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据。此时,如果我们仍采用常规方法从中抓取数据,那么我们将一无所获。那么...
    99+
    2023-01-30
    网页 Python JavaScri
  • Python基于Selenium怎么实现动态网页信息的爬取
    这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-22
  • Python爬虫:如何快速掌握Python爬虫核心技术,批量爬取网络图片
    对于爬虫,很多伙伴首选的可能就是Python了吧,我们在学习Python爬虫的时候得有侧重点,这篇文章教大家如何快速掌握Python爬虫的核心!有不清楚的地方,可以留言!1. 概述本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片...
    99+
    2023-06-02
  • Python用requests模块实现动态网页爬虫
    目录前言开发工具环境搭建总结前言 Python爬虫实战,requests模块,Python实现动态网页爬虫 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块:...
    99+
    2022-11-13
  • python-爬虫-xpath方法-批量爬取王者皮肤图片
    import requestsfrom lxml import etree 获取NBA成员信息 # 发送的地址url = 'https://nba.hupu.com/stats/players'# U...
    99+
    2023-09-13
    python 爬虫 jupyter
  • python爬虫爬取bilibili网页基本内容
    用爬虫爬取bilibili网站排行榜游戏类的所有名称及链接: 导入requests、BeautifulSoup import requests from bs4 import Be...
    99+
    2022-11-12
  • python如何爬取网页图片
    要使用Python爬取网页图片,可以使用requests库来发送HTTP请求,然后使用beautifulsoup库或者正则表达式来解...
    99+
    2023-08-20
    python
  • 使用 Python 爬取网页数据
    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 HTML 解析库, 可以编写出用于采集...
    99+
    2023-01-31
    网页 数据 Python
  • python怎么爬取豆瓣网页
    这篇文章主要介绍了python怎么爬取豆瓣网页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python 语法简要介绍python 的基础语法大体与c语言相差不大,由于省去了...
    99+
    2023-06-14
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据
    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Py...
    99+
    2023-10-23
    python 爬虫 beautifulsoup
  • 如何用python爬取网页数据
    要用Python爬取网页数据,可以使用Python的一些库和模块,例如requests、BeautifulSoup和Scrapy等。...
    99+
    2023-10-12
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作