phantomjs 爬去动态页面】的更多相关文章

最近有一个小需求,需要根据用户输入的某宝的店铺 url,检查地址是否存在,并抓取店铺名称.某宝店铺 url 的 title 通常是 xx-xx-xx 的形式,中间的 xx 就是对应的店铺名称. 这个需求很简单,根据 url 直接发送 get 请求,利用 cheerio 解析得到的 html 文件,就可以获得 title 的内容,再切割字符串就可以获得店铺名称. 为了验证某宝店铺页面的 title 均是 xx-xx-xx 形式,并且中间的 xx 就是店铺名称,就要搜索大量店铺页面名称.一个个查看即…
1.安装selenium pip/pip3 install selenium 注意依赖关系 2.phantomjs for windows 下载地址:http://phantomjs.org/download.html phantomjs-2.1.1-windows 仅支持64位系统 phantomjs-1.9.7-windows 支持32位系统,更早的版本没测试过 把下载好的安装包bin目录下的phantomjs.exe文件拷贝到python安装目录下的Scripts目录下 3.模拟浏览器操作…
目前绝大多数的网站的页面都是冬天页面,动态页面中的部分内容是浏览器运行页面中的JavaScript 脚本动态生成的,爬取相对比较困难 先来看一个很简单的动态页面的例子,在浏览器中打开 http://quotes.toscrape.com/js,显示如下: 页面总有十条名人名言,每一条都包含在<div class = "quote">元素中,现在我们在 Scrapy shell中尝试爬取页面中的名人名言: $ scrapy shell http://quotes.toscra…
今天使用python 和selenium爬取动态数据,主要是通过不停的更新页面,实现数据的爬取,要爬取的数据如下图 源代码: #-*-coding:utf-8-*- import time from selenium import webdriver import os import re #引入chromedriver.exe chromedriver = "C:/Users/xuchunlin/AppData/Local/Google/Chrome/Application/chromedri…
from selenium import webdriver import time _url="http://xxxxxxxx.com" driver = webdriver.PhantomJS() driver.get(_url) time.sleep(5) webdata=driver.page_source #这样就得到了web页面的内容,最好加个延时页面加载需要时间 #下面的就可以对这个页面进行爬取了 . . . . # 最好要记得关闭浏览器 driver.quit() 在这…
目录 一:浏览器信息测试 二:查找结点 三:测试动作 四:获取节点信息 五:切换子页面Frame 六,延时请求 七:前进和后退 八:Cookies 八:选项卡处理 九:捕获异常   这里之讲解用法,安装配置就不详细讲解了.我比较喜欢的浏览器驱动是ChromeDriver和无界面的PhantomJS. 一:浏览器信息测试 1.初始化浏览器   用下面的代码初始化浏览器 from selenium import webdriver # 把浏览器对象赋值为browser对象,然后就可以进行模拟浏览器操…
前面有篇文章给出了爬取动态页面的一种思路,即应用Selenium+Firefox(参考<scrapy动态页面爬取>).但是selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓取. 事实上,还有一种执行效率更高的方法.就是事先分析js发出的GET或者POST请求的网址,这样通过python向目标地址发出同样的请求,就可以得到与浏览器一致的response结果. 具体的步骤是:采用chrome浏览器中的调试工具,分析网页中用JavaScript获取数据的request语句.具体分析步…
环境:python2.7+scrapy+selenium+PhantomJS 内容:测试scrapy+PhantomJS 爬去内容:涉及到js加载更多的页面 原理:配置文件打开中间件+修改process_request函数(在里面增加PhantomJS操作) 第一步: settings.py DOWNLOADER_MIDDLEWARES = { 'dbdm.middlewares.DbdmSpiderMiddleware': 543, } 项目不一样名字会改变不影响. 第二步: --------…
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取.数据的获取过程跟人手动获取过程类似,所以也不会对服务器造成更大负荷.这是我写的第1个爬虫,初次接触,还请各位多多指教.本文的代码见Selenium获取动态页面数据1.ipynb或Selenium获取动态页面数据1.py. 1.准备环境 工欲善其事,必先装好环境,耐心地把下面的环境装好. 建议安装Py…
之前使用 selenium + firefox驱动浏览器来实现爬取动态网址,但是firefox经常更新,更新后时常会导致webdriver启动不来,所以改用phantomjs+selenium来改善一下. 使用phantomjs和使用浏览器区别并不大. 一,首先还是需要下载Phantomjs Phantomjs对各个主流的平台都支持,下载页面.选择好存放的目录,例如D:\phantomjs. phantomjs的可执行文件就在bin目录下,可以将D:\phantomjs\bin目录加入环境变量中…
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要去看之前的文章,代码是在之前的基础上修改的 [图文详解]scrapy爬虫与动态页面--爬取拉勾网职位信息(1) 开始 还是回到我们熟悉的页面,这里,我们熟练的打开了Newwork标签,我们点下一页,看会出来什么结果 果然还是跳出来一个页面,但是貌似..网址一样,我打开看一下 和之前不一样也! 一样的…
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所以也不会对服务器造成更大负荷.本文的代码见Selenium获取动态页面数据2.ipynb或Selenium获取动态页面数据2.py.同样在开始前需要准备环境,具体环境准备参考上一篇. 1.数据获取目标 全国水雨情网的数据同样是动态加载出来的,在浏览中打开网页后http://xxfb.hydroinfo.gov…
在C#中,一般常用的请求方式,就是利用HttpWebRequest创建请求,返回报文.但是有时候遇到到动态加载的页面,却只能抓取部分内容,无法抓取到动态加载的内容. 如果遇到这种的话,推荐使用phantomJS无头浏览器. 开发之前,先准备两样东西. 1. phantomJS-2.1.1   官方下载地址:http://phantomjs.org/download.html 2. JS脚本文件,本人命名为codes.js.内容如下.起初我并没有配置page的settings信息,导致在抓取有些异…
目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无法获得. 解决方案: 利用第三方中间件来提供JS渲染服务: scrapy-splash 等. 利用webkit或者基于webkit库 Splash是一个Javascript渲染服务.它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT.Twi…
动态页面模拟点击 #!/usr/bin/env python # -*- coding:utf-8 -*- # python的测试模块 import unittest from selenium import webdriver from bs4 import BeautifulSoup class douyuSelenium(unittest.TestCase): # 初始化方法 def setUp(self): self.driver = webdriver.PhantomJS() #具体的…
Python3.x:Selenium+PhantomJS爬取带Ajax.Js的网页 前言 现在很多网站的都大量使用JavaScript,或者使用了Ajax技术.这样在网页加载完成后,url虽然不改变但是网页的DOM元素内容却可以动态的变化.如果处理这种网页是还用requests库或者python自带的urllib库那么得到的网页内容和网页在浏览器中显示的内容是不一致的. 解决方案 使用Selenium+PhantomJS.这两个组合在一起,可以运行非常强大的爬虫,可以处理cookie,JavaS…
selenium+phantomjs爬取京东商品信息 今天自己实战写了个爬取京东商品信息,和上一篇的思路一样,附上链接:https://www.cnblogs.com/cany/p/10897618.html 打开 https://www.jd.com/ 首先不需要登陆就可搜索,淘宝不一样,所以淘宝我还没试过. 开启F12 定位一下搜索框和搜索按钮 input = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@id="key&…
什么是phantomjs phantomjs官网是这么说的,'整站测试,屏幕捕获,自动翻页,网络监控',目前比较流行用来爬取复杂的,难以通过api或正则匹配的页面,比如页面是通过异步加载.phantomjs就是一个完整的浏览器只能没有界面,因此我们可以用它来模拟真正的浏览器去访问页面,然后再获取页面.我要说的重点是如何在node中调用phantomjs来获取页面. node与phantomjs通信 命令行传参   只能在phantomjs开启时对其传参,运行过程中无能为力. 标准输出      …
selenium+phantomjs爬取bilibili 首先我们要下载phantomjs 你可以到 http://phantomjs.org/download.html 这里去下载 下载完之后解压到你想要放的位置 你需要配置一下环境变量哦 如下图: 首先,我们怎么让浏览器模拟操作,也就是我们自己先分析好整个操作过程,哪个地方有什么问题,把这些问题都提前测试好,没问题了再进行写代码. 打开bilibili网站 https://www.bilibili.com/ 发现下图登陆弹窗 那么这里我们就得…
参考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬虫过程中,一般情况下都是直接解析html源码进行分析解析即可.但是,有一种情况是比较特殊的:网页的数据采用异步加载的,比如ajax加载的数据,在我们“查看网页源代码”是查看不到的.采用常规的爬虫这一块是解析不到的. 第一种解决方案是采用一些第三方的工具,模拟浏览器的行为,去加载数据.比如:Selenium.PhantomJs. 优点:不必考虑动态页面的各种变化多端(无论动态…
使用selenium+PhantomJS爬取拉钩网职位信息,保存在csv文件至本地磁盘 拉钩网的职位页面,点击下一页,职位信息加载,但是浏览器的url的不变,说明数据不是发送get请求得到的. 我们不去寻找它的API.这里使用另一种方式:使用PhantomJS模拟浏览,通过单击页面获取下一页. 这里的PhantomJS是一个没有界面的浏览器. from selenium import webdriver import time import random from selenium.webdri…
第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式. ★PART1:Intel X86基础分页机制 1. 页目录.页表和页 首先先要明白分页是怎么来的,简单来讲,分页其实就是内存块的映射管理.在我们之前的章节中,我们都是使用的分段管理模式,处理器中负责分段的部件是段部件,段管理机制是Intel处理器最基本的处理机制,在任何时候都是无法关闭的.而当开启了分页管理之后,处理器会把4GB的内存分…
传送门 ☞ 1.Web服务内功经脉 传送门 ☞ 2.让服务动起来 传送门 ☞ 3.掀起请求盖头来 传送门 ☞ 4.静态页面起步 传送门 ☞ 5.包装请求参数 在上一节,我们已经完成了TomJetty服务器处理静态页面请求的功能.但是只能处理静态页面请求的服务器并不能满足我们的要求,所以本节我们将为TomJetty服务器完成动态页面请求的处理工作. 所谓动态页面请求,无非就是客户端发送一个请求的url地址或者将一些请求参数提交给某一个url地址,服务器端首先接收到这个url地址并检索其在服务端程序…
在ajax横行的年代,很多网页的内容都是动态加载的,而我们的小爬虫抓取的仅仅是web服务器返回给我们的html,这其中就 跳过了js加载的部分,也就是说爬虫抓取的网页是残缺的,不完整的,下面可以看下博客园首页 从首页加载中我们看到,在页面呈现后,还会有5个ajax异步请求,在默认的情况下,爬虫是抓取不到这些ajax生成的内容的, 这时候要想获取就必须调用浏览器的内核引擎来下载这些动态页面,目前内核引擎三足鼎立. Trident: 也就是IE内核,WebBrowser就是基于该内核,但是加载性内比…
摘要 网上有很多个人站来分享电影资源,其实有时候我们自己也想做这个一个电影站来分享资源.但是这个时候就有一个问题,电影的资源应该从哪里来呢?难道要自己一条条手动去从网络上获取,这样无疑是缓慢而又效率低下的.这个时候我们可以用自己掌握的知识去写一个小小爬虫程序,在网络上爬去电影资源. 爬去对象---电影天堂 首先打开电影天堂的链接,从下面的图片可以看出电影天堂的电影资源都是已列表页--详情页的方式展示得,这样是非常易于爬去的.那么我这次就以电影天堂导航栏中的最新资源为例.点开最新资源,是列表也展示…
1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.action_chains import ActionChai…
爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 爬虫系列2:https://www.cnblogs.com/yizhiamumu/p/10267721.html [保存]:参考前文 爬虫系列3:https://www.cnblogs.com/yizhiamumu/p/10270926.html [动态]:参考前文 爬虫系列4:https:…
1. 获取AJAX加载动态页面的内容 1.1. Introduction 如果所爬取的网址是通过Ajax方式加载的,就直接抓包,拿他后面传输数据的文件 有些网页内容使用AJAX加载,只要记得,AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了. 拿到JSAON,就是拿到了网页的数据 例子:http://www.kfc.com.cn/kfccda/storelist/index.aspx 这里有很多页数据,每一页的数据都是ajax加载的.如果你直接用pyth…
使用 selenium 爬取动态加载内容 开启中间件 DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMiddleware': 543, } 在爬虫文件中 创建 浏览器对象 使用 爬虫文件的 init 方法 def __init__(self): self.bro = webdriver.Chrome(executable_path=r'C:\Users\old-boy\Desktop\爬虫+数据\爬虫_d…
1.任务定义: 爬取某动态分页页面中所有子话题的内容. 所谓"动态分页":是指通过javascript(简称"js")点击实现翻页,很多时候翻页后的页面地址url并没有变化,而页面内容随翻页动作动态变化. 2.任务难点及处理方法: 难点: 1)  scrapy如何动态加载所有"下一页":要知道scrapy本身是不支持js操作的. 2)  如何确保页面内容加载完成后再进行爬取:由于内容是通过js加载的,如果不加控制,很可能出现爬到空页面的情况. 处…