使用selenium爬取网站动态数据
处理页面动态加载的爬取
selenium
selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等
环境搭建:
- 安装:pip install selenium
- 获取浏览器的驱动程序:下载地址http://chromedriver.storage.googleapis.com/index.html
- 驱动与浏览器版本对应:https://blog.csdn.net/ezreal_tao/article/details/80808729
设置chorme浏览器无界面模式:
编码流程:
from selenium import webdriver
import time
# 创建一个浏览器对象 executable_path:驱动路径
bro = webdriver.Chrome(executable_path='./chromedriver')
# get方法可以指定一个url,让浏览器进行请求
bro.get('https://www.baidu.com')
# 让浏览器进行指定词条搜索
'''
#使用下面的方法,查找指定的元素进行操作即可
find_element_by_id 根据id找节点
find_elements_by_name 根据name找
find_elements_by_xpath 根据xpath查找
find_elements_by_tag_name 根据标签名找
find_elements_by_class_name 根据class名字查找
'''
text = bro.find_element_by_id('kw')
text.send_keys('人民币') # send_keys表示向文本框中录入指定内容
time.sleep(3)
button = bro.find_element_by_id('su')
button.click()# click表示的是点击操作
time.sleep(5)
bro.quit()
phantomJs
phantomJs是一个无界面的浏览器,其自动化流程与上述操作谷歌自动化流程是一模一样的
from selenium import webdrvier
使用selenium爬取豆瓣电影搞笑排行榜动态数据
from selenium import webdriver
import time
from lxml import etree
bro = webdriver.Chrome('./chromedriver')
url = 'https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action='
bro.get(url)
# 等待五秒页面加载完毕
time.sleep(5)
# 重复20次使用页面滚轮
for i in range(20):
time.sleep(2)
bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# 获取页面源代码,可以使用三种解析方式进行解析,这里使用xpath解析数据
text = bro.page_source
tree = etree.HTML(text)
div_list = tree.xpath('//div[@class="movie-info"]')
f = open('豆瓣喜剧电影排行榜.txt','w',encoding='utf-8')
count = 0
for div in div_list:
# 获取电影具体数据,并进行持久化存储
try:
name = div.xpath('./div[@class="movie-name"]/span/a/text()')[0]
link = div.xpath('./div[@class="movie-name"]/span/a/@href')[0]
man = div.xpath('./div[@class="movie-crew"]/text()')[0]
country = div.xpath('./div[@class="movie-misc"]/text()')[0]
num = div.xpath('./div[@class="movie-rating"]/span[2]/text()')[0]
except IndexError:
continue
f.write('电影名:'+name+'\n链接'+link+'\n'+'导演:'+man+'\n国家:'+country+'\n评分:'+num+'\n-----------------------------\n\n\n')
print('写入成功:',name)
count += 1
print('爬取完毕,共抓取%s跳数据'%count)
f.close()
time.sleep(5)
bro.quit()
使用selenium爬取网站动态数据的更多相关文章
- 使用Selenium爬取网站表格类数据
本文转载自一下网站:Python爬虫(5):Selenium 爬取东方财富网股票财务报表 https://www.makcyun.top/web_scraping_withpython5.html 需 ...
- 爬虫(十七):Scrapy框架(四) 对接selenium爬取京东商品数据
1. Scrapy对接Selenium Scrapy抓取页面的方式和requests库类似,都是直接模拟HTTP请求,而Scrapy也不能抓取JavaScript动态谊染的页面.在前面的博客中抓取Ja ...
- 如何使用python爬取网页动态数据
我们在使用python爬取网页数据的时候,会遇到页面的数据是通过js脚本动态加载的情况,这时候我们就得模拟接口请求信息,根据接口返回结果来获取我们想要的数据. 以某电影网站为例:我们要获取到电影名称以 ...
- 利用selenium 爬取豆瓣 武林外传数据并且完成 数据可视化 情绪分析
全文的步骤可以大概分为几步: 一:数据获取,利用selenium+多进程(linux上selenium 多进程可能会有问题)+kafka写数据(linux首选必选耦合)windows直接采用的是写my ...
- python selenium爬取自如租房数据保存到TXT文件
# -*- coding: utf-8 -*-"""Created on Fri Aug 31 2018 @author: chenlinlab"" ...
- scrapy框架 + selenium 爬取豆瓣电影top250......
废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...
- Python+Selenium爬取动态加载页面(1)
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...
- selenium跳过webdriver检测并爬取天猫商品数据
目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 现在爬取淘宝,天猫商品数据都是需要首先进行登录的.上一节我们已经完成了模拟登录淘宝的步骤,所以在此不详细讲如何模拟登录淘宝.把关 ...
- Scrapy 框架 使用 selenium 爬取动态加载内容
使用 selenium 爬取动态加载内容 开启中间件 DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMidd ...
随机推荐
- Docker Kubernetes 介绍 or 工作原理
Kubernetes 介绍 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容 ...
- Shell 实践、常用脚本
(1)计算1-100的和. #!/bin/bash n= ` do n=$[$i+$n] done echo $n (2)输一个数字,然后计算出1到数字的和,要求如果输入数字小于1,则重新输入,知道输 ...
- nginx代理配置 配置中的静态资源配置,root 和 alias的区别
这篇主要内容是:nginx代理配置 配置中的静态资源配置,root 和 alias的区别.启动注意事项! 为什么会在window上配置了nginx呢?最近我们的项目是静态资源单独放在一个工程里面,后端 ...
- 【Alpha】Scrum Meeting 5
目录 前言 任务分配 燃尽图 会议照片 签入记录 遇到的困难 前言 时间: 4.9日中午11.30 地点:F-220 本次会议旨在统计各位同学的进度以及催促任务的进展. 任务分配 姓名 当前阶段任务 ...
- VS2015 scanf 函数报错 error C4996: 'scanf'
错误提示:error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. ...
- Loj 6036 「雅礼集训 2017 Day4」编码 - 2-sat
题目传送门 唯一的传送门 题目大意 给定$n$个串,每个串只包含 ' .问是否可能任意两个不同的串不满足一个是另一个的前缀. 2-sat的是显然的. 枚举每个通配符填0还是1,然后插入Trie树. 对 ...
- iOS开发 -------- 图片浏览器初步
一 示例代码 // // RootViewController.m // 图片浏览器初步 // // Created by lovestarfish on 15/11/1. // Copyright ...
- html5中的几种布局简单比较
html中的布局主要由静态布局.自适应布局.流式布局以及响应式布局几类,简单比较以下这几种布局的区别和特点. 一 静态布局(Static Layout) 表现:在传统web设计中,不管浏览器尺寸具体大 ...
- 【Nodejs】【node.js 安装 和 配置Sublime Text的Node.js】
[一] [安装nodejs] 第一步:下载安装文件: https://nodejs.org/en/download/ 第二步:安装nodejs 下载完成之后,双击"node-v6.10.1- ...
- gevent-协程用法
文章介绍了一种采用循环的方式生产协程列表,并可以向协程函数传递参数... # 协程引用import gevent from gevent import monkey, pool monkey.patc ...