需要爬取的网站数据: http://gkcx.eol.cn/soudaxue/queryProvince.html?page=1 一共是165页,将page=1 变成其他的数字即可访问。
获取所有的url:  urls = ('http://gkcx.eol.cn/soudaxue/queryProvince.html?page={}'.format(i) for i in range(1,166))
用火狐浏览器打开需要爬取的网页,右键,查看页面源代码,CTRL + F 查找输入293,源代码里面并没有这个值,说明是动态加载的数据。
对于动态加载的数据目前我熟知的有两中办法,一是使用selenium,二是分析网页元素,找出该数据的原始网页,提交表单,获取不同的数据,用来达到爬取的目的。
#coding=utf-8
from bs4 import BeautifulSoup 
from selenium import webdriver
urls = ('http://gkcx.eol.cn/soudaxue/queryProvince.html?page={}'.format(i) for i in range(1,166))
driver=webdriver.Firefox()
driver.maximize_window()
for url in urls:
    #print ("正在访问{}".format(url))
    driver.get(url)
    data = driver.page_source
    soup = BeautifulSoup(data, 'lxml')
    grades = soup.find_all('tr')
    for grade in grades:
        if '<td>' in str(grade):
            print(grade.get_text())

代码说明:

from bs4 import BeautifulSoup   使用BeautifulSoup  解析网页数据

from selenium import webdriver 使用selenium爬取动态数据

urls = ('http://gkcx.eol.cn/soudaxue/queryProvince.html?page={}'.format(i) for i in range(1,166))   一个包含所有需要爬取的网站生成器

driver=webdriver.Firefox()  打开Firefox浏览器

driver.maximize_window()  窗口最大化

driver.get(url)  浏览器自动跳转到该url链接

data = driver.page_source   获取页面元素,里面就包含了需要爬取的数据

soup = BeautifulSoup(data, 'lxml')
grades = soup.find_all('tr')
for grade in grades:
if '<td>' in str(grade):
print(grade.get_text())

通过对数据的分析,写出上面的查找方法,即可获取所有数据。

通过这种方法获取数据,简单,也比较直观,缺点是太慢了。

现在通过方法二是获取数据。

用火狐浏览器打开需要爬取的网页,右键  查看元素,选择网络,默认就好。

(有些老版本的火狐浏览器可能需要安装firebug插件)

点击第二页,看看都加载了哪些网页和数据。

分析如下图:

分析得知类型为json的那一栏即是我们需要的数据

查看消息头里面的请求网站

https://data-gkcx.eol.cn/soudaxue/queryProvince.html?messtype=jsonp&callback=jQuery183005011523805365803_1512185796058&luqutype3=&province3=&year3=&luqupici3=&page=2&size=10&_=1512185798203

真正的请求网站 https://data-gkcx.eol.cn/soudaxue/queryProvince.html

参数 messtype=jsonp&callback=jQuery183005011523805365803_1512185796058&luqutype3=&province3=&year3=&luqupici3=&page=2&size=10&_=1512185798203

也可以点击右侧的参数栏参看参数

page 表示当前页数

size表示每页显示的条目数

#coding=utf-8
import requests
import json
from prettytable import PrettyTable  
if __name__=='__main__':
    url = 'https://data-gkcx.eol.cn/soudaxue/queryProvince.html'
    row = PrettyTable()
    row.field_names = ["地区", "年份", "考生类别", "批次","分数线"]
    for i in range(1,34):
        data ={"messtype":"json",
              "page":i,
              "size":50,
              "callback":
              "jQuery1830426658582613074_1469201131959",
              "_":"1469201133189",
        school_datas  = requests.post(url,data = data).json()
        datas = school_datas["school"]
        for data in datas:
            row.add_row((data["province"] ,data["year"],data["bath"],data["type"], data["score"]))
    print(row)

一共是 1644条,每页显示的最大条数是50条,1600/50 = 32,还有44条就是33页,所以范围就应该是(1,34)

        data ={"messtype":"json",
              "page":i,
              "size":50,
              "callback":
              "jQuery1830426658582613074_1469201131959",
              "_":"1469201133189",
              }

分析得出的提交数据,使用post方式。

参考原文:http://www.cnblogs.com/buzhizhitong/p/5697683.html需要爬取的网站数据: http://gkcx.eol.cn/soudaxue/queryProvince.html?page=1 一共是165页,将page=1 变成其他的数字即可访问。获取所有的url:  urls = ('http://gkcx.eol.cn/s
在使用python爬虫技术采集数据信息时,经常会遇到在返回的网页信息中,无法抓取动态加载的可用数据。例如,获取某网页中,商品价格时就会出现此类现象。如下图所示。本文将实现爬取网页中类似的动态加载的数据。 1. 那么什么是动态加载的数据? 我们通过requests模块进行数据爬取无法每次都是可见即可得,有些数据是通过非浏览器地址栏中的url请求得到的。而是通过其他请求请求到的数据,那么这些通过其他请求请求到的数据就是动态加载的数据。(猜测有可能是js代码当咱们访问此页面时就会发送得get请求,到其他url中获取数据) 2. 如何检测网页中是否存在动态加载得数据? 在当前页面中打开抓包工具,捕
一、正则表达式(处理字符串强大的工具,有特定的语法结构)功能:实现字符串的检索,替换,匹配验证实例: 地址:http://tool.oschina.net/regex/ #测试文本Hello,my phone number is 010-86432100 and email is pindao@xiaomi.com,and my website is http://xiaomi.com 二、...
上一篇章,讲解了python简单爬取网页静态数据的方法。今天,来讲讲如何用python爬去数据用js动态加载的网页。 所用到的库selenium以及与它搭配的webdriver,用来打开浏览器,从网页中读取数据的过程,这样才能找到数据。 代码如下: from selenium import webdriver import time import xlwt import datetime '''get the url of the aim''' url = 'https://m.dewu.com/rout
import re from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.supp
我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的。所以也就引出了什么是动态数据的概念,动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器后动态生成的,而之前并没有的。 在编写爬虫进行网页数据抓取的时候,经常会遇到这需要动态加载数据的HTML网页,如果还是直接从网页上抓取那么将无法获得任何数据。 今天,我们就在这里简单聊一聊如何用python来抓取页面中的JS动态加载的数据。 给出一个网页:豆瓣电影排行榜,其中的所有电影信息都是动态加载的。我们无法直接从页面中获得每个电影的信息。 如下图所示,我们无法在HTML中找到对应的电
matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随
基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB(基于java的开发源码-文档数据库) 社区版.zip 基于java的开发源码-OrientDB