python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)
页面翻页,下一页可能是一个新的url
也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页
目标:爬取同一个url下不同页的数据(上述第二种情况)
url:http://www.gx211.com/collegemanage/search.aspx?id=1&xxcity=1
中国高校之窗,我要爬取北京市所有的学校列表,共有四页数据,四页都是同一个url。
部分页面如图:
找到“下一页”按钮的源码,确认是用js进行的跳转。
工具:
- selenium
- pyquery
- 火狐浏览器
代码:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from pyquery import PyQuery as pq #
# 爬取北京市所有的学校
# browser = webdriver.Firefox() # 创建一个浏览器对象,这里还可以使用chrome等浏览器
try:
BJuniv = []
browser.get('http://www.gx211.com/collegemanage/search.aspx?id=1&xxcity=1') # 获取并打开url
for r in range(4):
html = browser.page_source # 获取html页面
doc = pq(html) # 解析html
table = doc('.content tbody') # 定位到表格
table.find('script').remove() # 除去script标签 list_cont = table('tr').items() # 获取tr标签列表
for i in list_cont:
univ = (i.text()).split() # 获取每个tr标签中的文本信息,返回一个列表
print(univ)
BJuniv.append(univ)
nextpagebutton = browser.find_element_by_xpath('//*[@id="Lk_Down"]') # 定位到“下一页”按钮
nextpagebutton.click() # 模拟点击下一页
wait = WebDriverWait(browser, 10) # 浏览器等待10s finally:
browser.close() # 关闭浏览器
with open("北京市所有大学.txt", "wt", encoding='utf8') as out_file: # 存储为txt格式
out_file.write('全国各省学校名单:\n\n')
for u in BJuniv:
out_file.write(str(u) + '\n')
运行过程:自动打开浏览器,输入url,获取页面,点击下一页,重复直到循环结束。(过程看不到很细致的,跳转比较快)
运行结果(部分):
python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)的更多相关文章
- [python爬虫] Selenium定向爬取PubMed生物医学摘要信息
本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容. PubMed是一个免费的搜寻引擎,提供生物医学方 ...
- [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈
我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点: 1.可以了解Python简单爬取图片的一些思路和方法 ...
- [python爬虫] Selenium定向爬取虎扑篮球海量精美图片
前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...
- Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗
介绍 本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容. 为了知道POST方法所需要传 ...
- [爬虫]用python的requests模块爬取糗事百科段子
虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更 ...
- python的requests模块爬取网页内容
注意:处理需要用户名密码认证的网站,需要auth字段. # -*- coding:utf-8 -*- import requests headers = { "User-Agent" ...
- python实例:自动爬取豆瓣读书短评,分析短评内容
思路: 1.打开书本“更多”短评,复制链接 2.脚本分析链接,通过获取短评数,计算出页码数 3.通过页码数,循环爬取当页短评 4.短评写入到txt文本 5.读取txt文本,处理文本,输出出现频率最高的 ...
- [实战演练]python3使用requests模块爬取页面内容
本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...
- python+selenium+xpath 爬取天眼查工商基本信息
# -*- coding:utf-8 -*-# author: kevin# CreateTime: 2018/8/16# software-version: python 3.7 import ti ...
随机推荐
- Java 问题定位工具 ——jstack
简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」.线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合. 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死 ...
- SPOJ 8093 JZPGYZ - Sevenk Love Oimaster
思路 可以用复杂度不对的做法水过去 相当于求parent树子树中的颜色种数,可以离线后树状数组(HH的项链,询问右端点排序之后维护last),dsu on tree,莫队都可以 但是也可以记录每个点上 ...
- 加sogou 和wps
刚装完系统,装常用工具: sogoupinyin / wps linux ==========sogoupinyin=========================1.sogou linux 下载d ...
- Jquery中 .empty()和.append()
jQuery empty() 方法:移除所选<div> 元素的内容: .empty()实例 jQuery append() 方法:在所选<> 元素结尾插入内容: .append ...
- List集合流处理类型小结
本文为博主原创,未经允许不得转载 对应实体类 import lombok.Getter; import lombok.Setter; @Getter @Setter public class Stud ...
- 數據監控与診斷--環形緩沖區(RING BUFFER)
1. 環形緩沖區 動態管理視圖: sys.dm_os_ring_buffers 查看ring_buffers: Select distinct ring_buffer_type from sys.d ...
- EntityFrameworkCore将数据库Timestamp类型在程序中转为long类型
EntityFrameworkCore将数据库Timestamp类型在程序中转为long类型 EntityFrameworkCore Entity public class Entity { publ ...
- RFS常见问题
一.DatabaseLibrary 库遇到的问题:1,连接mysql库,查询语句带有中文,报FAIL UnicodeEncodeError: 'latin-1' codec can't encode ...
- react native 0.55.4 rctsrwebsocket会崩溃的问题解决 直接原文覆盖
//// Copyright 2012 Square Inc.//// Licensed under the Apache License, Version 2.0 (the "Licens ...
- Ubuntu - Start - 必要软件安装
1.安装Chromium浏览器 sudo apt install chromium-browser 如果出错, 先更新下apt sudo apt update 2. 安装rime输入法 sudo ap ...