爬虫第十一式:用selenium爬取民政部行政区划代码
温馨提示:
爬虫玩得好,监狱进得早。数据玩得溜,牢饭吃个够。
《刑法》第 285 条,非法获取计算机信息系统数据罪。
违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
正文:
本篇将介绍更加刺激的案例,嘿嘿~这次我们不整那些各个平台公司的网站了,我们整一下这个:
这个我们生活啊,时不时的需要来点刺激,这次我考虑了很久,要不要写,我又怕我会进去。。。但是不写这个又是一个很好的案例 (曾经是某公司的面试题),我考虑很久,决定还是写了,在写之前呢,我从网上查了查有没相关的案例,我发现还是有的,所以应该是没有问题的
接下来我们就开始了,提取最新月份的行政区划代码,现在最新的是2020年11月份的,我们就提取这个
提取这个地址URL的主页:
http://www.mca.gov.cn/article/sj/xzqh/2020/
而我们要提取这里面的内容
那这个节点定位到了后,肯定是click点击,然后用xpath提取就可以,点击完成后我要提取 这些数据
那现在我们的问题来了,我们点击之后出现了两个窗口:
假如说我们在第一个窗口的时候,我们创建了一个浏览器对象比如代码我们就这样写:
driver.get(url='http://www.mca.gov.cn/article/sj/xzqh/2020/')
这就是打开了这个主页的URL地址的页面
接着我们就要找到这个节点
代码如下:
driver.find_element_by_xpath(提取节点xpath表达式).click()
这样我们就打开了第二个窗口,就到了这个页面
我们就是从这个页面里面提取数据,那么问题来了,我们这个driver,提取的到底是那个页面的driver,那我们想一想,如果是第一个页面的,那就只是点击了一下,那还是停留在这个页面,那我们xpath不可能提取数据的吧,所以就明确的说就是第一个页面的∫driver,但是他不可能跑到第二个页面去
所以我们任务就是把主页的driver切换到详情页里面去,也就是第二页里面去,一但我们切换过来了,我们就可以直接xpath提取了,页面也叫做句柄(窗口)
那我们切换句柄也就两句代码:
# li:[<handle1>,<handle2>...] handle1就是主页的那个,h2就是切换过来的句柄,类似于这种
li.driver.window_handles # 拿到整个浏览器的句柄
driver.switch_to.window(li[1]) # 获取第二个元素,第一个是主页的
接下里我们写代码:
from selenium import webdriver
import time
# 导入time模块是因为,webdriver打开浏览器页面需要时间
打开浏览器:
# 打开浏览器,输入URL地址
self.driver = webdriver.Chrome()
self.driver.get(url='http://www.mca.gov.cn/article/sj/xzqh/2020/')
接下来我们点到详情页的页面首先提取xpath表达式:
self.driver.find_element_by_xpath('//*[@id="list_content"]/div[2]/div/ul/table/tbody/tr[1]/td[2]/a').click()
# 只要click(),必须休眠
time.sleep(1)
接着切换句柄,就是上面我们之前写过,那两行代码就是,再然后就是老一套的提取数据,用xpath表达式,表达式就直接复制就行
所以我们就直接奉上所有代码:
"""
selenium抓取民政部最新行政区划代码
"""
from selenium import webdriver
import timeclass MzbSpider:def __init__(self):# 打开浏览器,输入URL地址self.driver = webdriver.Chrome()self.driver.get(url='http://www.mca.gov.cn/article/sj/xzqh/2020/')def parse_html(self):self.driver.find_element_by_xpath('//*[@id="list_content"]/div[2]/div/ul/table/tbody/tr[1]/td[2]/a').click()# 谨记:只要click(),必须休眠time.sleep(1)# 切换句柄li = self.driver.window_handlesself.driver.switch_to.window(li[1])# 提取数据tr_list = self.driver.find_elements_by_xpath('//tr[@height="19"]')for tr in tr_list:item = {}li = tr.text.split()item['code'] = li[0]item['name'] = li[1]print(item)def run(self):self.parse_html()if __name__ == '__main__':spider = MzbSpider()spider.run()
爬虫第十一式:用selenium爬取民政部行政区划代码相关推荐
- python 爬虫实战六:用 selenium 爬取豆瓣电影
今天帮朋友爬取豆瓣电影的数据,以便进行社交网络分析. 首先打开豆瓣电影,然后点击 分类 ,选择要爬取的特定电影 这里以国产喜剧片为例:依次点击 电影.喜剧.中国大陆 然后点击一个小的列表按键 找到我们 ...
- 爬虫(6)-使用selenium爬取淘宝天猫商品信息(价格,销售量等)
文章目录 1.只读取第一页 1.1准备工作 1.2.定位 1.3.获取商品信息 1.4. 整体代码 1.5.输出结果展示 1.6改进,存储在CSV文件内并分行存储 2.读取多页商品信息 2.1部分问题 ...
- python爬取微博评论点赞数_Python selenium爬取微博数据代码实例
爬取某人的微博数据,把某人所有时间段的微博数据都爬下来. 具体思路: 创建driver-–get网页--找到并提取信息-–保存csv--翻页--get网页(开始循环)-----没有"下一页& ...
- 爬虫第十式:多线程爬取小米应用商店聊天社交类别
温馨提示: 爬虫玩得好,监狱进得早.数据玩得溜,牢饭吃个够. <刑法>第 285 条,非法获取计算机信息系统数据罪. 违反国家规定,侵入前款规定以外的计算机信息系统或者采用其 ...
- python 爬虫(一) requests+BeautifulSoup 爬取简单网页代码示例
以前搞偷偷摸摸的事,不对,是搞爬虫都是用urllib,不过真的是很麻烦,下面就使用requests + BeautifulSoup 爬爬简单的网页. 详细介绍都在代码中注释了,大家可以参阅. # -* ...
- python提取图片文字视频教学_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...
一.爬虫记得基本方法 1.1 爬虫概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使 ...
- python爬取文字和图片_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...
[toc] 一.爬虫记得基本方法 1.1 爬虫概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. ...
- 爬虫训练(三):爬取酷狗音乐
今天趁机一鼓作气,把简单爬虫内容一次学习完毕,最后以爬取酷狗音乐排行榜歌曲作为结束,然后对此次学习做一个整理和总结.而且前两篇有些混乱,这里把内容做一次阶段性总结. 一.安装包 爬虫三大包:reque ...
- 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息
本文对使用到的技术仅做简单的介绍,若想了解更多,请前往相应的官网网站进行学习. 本文适合对爬虫相关知识接触不多的新手,主要是普及Selenium如何做爬虫,大佬请跳过. 1.Selenium简单介绍 ...
- 爬虫之selenium爬取斗鱼网站
爬虫之selenium爬取斗鱼网站 示例代码: from selenium import webdriver import timeclass Douyu(object):def __init__(s ...
最新文章
- task_struct源码
- python坐标轴刻度为经纬度_python各类经纬度转换
- 理解Promise (3)
- boost::regex模块部分正则表达式相关的测试程序
- WebStorm For Mac下载及破解方法
- 使用SecureCrt远程登录Linux安装配置教程
- 谷歌开源EfficientNets:ImageNet准确率创纪录,效率提高10倍
- 【caffe-windows】 caffe-master 之Matlab中model的分类应用
- mysql 聚集函数 count 使用详解
- 用AlphaGo背后的人工智能做金融投资
- IDEA多款主题颜色推荐!炫酷经典!
- seo好学吗?怎么学seo?
- 万年历c语言程序设计免费,C语言程序设计万年历程序
- Google Earth 嵌入Qt应用程序
- 一步一步实现一个简单的OS(先小装一下)
- 印度小伙花不到10美元自制智能眼镜
- 如何更好的进行技术面试
- 支付宝重启免费时代, 让天下没有难做的生意!
- 用Python实现地理信息出图(含比例尺、指北针、图例)
- oracle远程数据库导入导出。