通常我们使用Java提供的HttpURLConnection或者Apache的HttpClient获取的网页源代码都是直观可见的,其代码的内容和通过浏览器右键网页->点击查看网页源代码的内容一致. 但是现在越来越多的网站使用Js来动态生成内容来提高相应速度,而HttpClient只是返回后端相应的response的请求主体,并没有返回浏览器生成的网页,所以对于Js生成的内容HttpClient是获取不了的. 对于获取Js生成的网页,我们主要通过模拟浏览器的运行,渲染response的请求主体最终…
最近遇到phantomjs动态更换ip的功能,在知乎上看到一篇不错的文章,顺手记下来以备后用 phantomjs selenium 如何动态修改代理? 可以这样做(Python代码): # 不使用代理代打开ip138 browser=webdriver.PhantomJS(PATH_PHANTOMJS) browser.get('http://1212.ip138.com/ic.asp') print('1: ',browser.session_id) print('2: ',browser.p…
from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference('network.proxy.type', 1) profile.set_preference('network.proxy.http', 'proxy_url') profile.set_preference('network.proxy.http_port', 3128) profile.set_preferen…
HtmlUnit官网的介绍: HtmlUnit是一款基于Java的没有图形界面的浏览器程序.它模仿HTML document并且提供API让开发人员像是在一个正常的浏览器上操作一样,获取网页内容,填充表单,点击超链接等等. 它非常好的支持JavaScript并且仍在不断改进,同时能够解析非常复杂的AJAX库,通过不同的配置来模拟Chrome.Firefox和IE浏览器. 本文针对一个足彩网站抓取的例子,来熟悉HtmlUnit        WebClient wc = new WebClient…
介绍:Leaflet是一个开源的JavaScript库,对移动端友好且对地图有很好的交互性. 大小仅仅只有 33 KB, 同时具有大多数地图所需要的特点. Leaflet设计的非常简单易懂, 同时具有很好的性能和易用性. 它在桌面端和移动端都工作的相当高效,并有大量的插件用于扩张Leaflet的功能.微信公众号:673399718嘻嘻demo图如下: 使用leaflet.js生成世界地图非常方便,配置参数记录下,有兴趣的可以看看本例中引入jquery操作dom.首先:在页面的头部引入css文件c…
目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, HTTPS以保密为目标研发, 简单讲HTTPS协议是由SSL+HTTP协议构建的可进行加密传输. 身份认证的网络协议, 其安全基础是SSL协议, 因此加密的详细内容请看SSL. 全称Hypertext Transfer Protocol overSecure Socket Layer.句法类同http…
前言 现在很多网站的都大量使用JavaScript,或者使用了Ajax技术.这样在网页加载完成后,url虽然不改变但是网页的DOM元素内容却可以动态的变化.如果处理这种网页是还用requests库或者python自带的urllib库那么得到的网页内容和网页在浏览器中显示的内容是不一致的. 解决方案 使用Selenium+PhantomJS.这两个组合在一起,可以运行非常强大的爬虫,可以处理cookie,JavaScript,header以及其他你想做的任何事情. 安装第三方库 Selenium是…
js设置.获取单值cookie和多值cookie,代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值cookie this.get = function(name) { var start = document.cookie.indexOf(encodeURIComponent(name)) ; var end = document.cookie.indexOf(';', start) ; if(end…
做了一个测试的一个小工具,需求如下: 1.有一批URL列表,需要知道哪个URL请求响应内容中包含http:关键字的. 2.url请求包括http和https 2种协议 3.要部署在linux服务器上,且linux服务器只能通过代理来连接外网 帖一下我的核心代码吧: package com.cn.util; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader;…
我来分享一个快速设置背景的js (需要jq支持!) 快速切图铺页面用---就是不需要手动输入背景图的长宽 自动获取背景图的长宽 : <div class="wrap"> <div style="background: url(images/by_01.jpg) no-repeat top center;"></div> <div style="background: url(images/by_02.jpg) no…
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get Object of return from js * * @author Aaron.ffp * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9 1:39:17 Ex…
npm获取配置有6种方式,优先级由高到底. 命令行参数. --proxy http://server:port即将proxy的值设为http://server:port. 环境变量. 以npm_config_为前缀的环境变量将会被认为是npm的配置属性.如设置proxy可以加入这样的环境变量npm_config_proxy=http://server:port. 用户配置文件.可以通过npm config get userconfig查看文件路径.如果是mac系统的话默认路径就是$HOME/.n…
工作中遇到需要对项目中使用的selenium设置代理,跟大家分享一下. 1.下载chromeDriver:http://chromedriver.storage.googleapis.com/index.html 2. 将下载好的文件解压,将chromedriver.exe拷贝到chrome根目录,一般是在项目的根目录下. 3.可以使用chromeDriver了,如果把chromedriver拷贝到项目根目录就不需要setProperty了,但是我是放到了Chrome根目录下,所以要设置驱动路径…
JS设置和获取盒模型的宽和高 dom.style.width/height:只能取出内联样式的宽度和高度 dom.currentStyle.width/height:获取即时的计算的样式,但是只有IE支持 window.getComputedStyle(dom).width:获取即时计算的样式,支持其他浏览器,兼容性更好 dom.getBoundingClientRect( ).width/height:计算盒模型在页面中的绝对位置,比较少用. dom.offsetWidth/offectHei…
应用场景 生成带二维码的推广海报图片 旧方法: 将用户自己的推广连接先通过qrcode.js生成二维码,然后再用后台返回的一张背景图片和二维码通过canvas绘制成一张海报. 问题 在部分安卓手机上获取二维码图片后,onload事件不起作用,代码演示如下. <!---放二维码---> <div id="imgs" style="width:100px; height:100px; margin-top:15px;"hidden></di…
python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chromeOptions = webdriver.ChromeOptions() # 设置代理 PROXY = "124.206.133.227:80" chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('-…
from selenium import webdriver PROXY = "" chrome_options = webdriver.ChromeOptions() prefs = { "profile.default_content_setting_values" : { }, } chrome_options.add_argument('--proxy-server={0}'.format(PROXY)) # 设置代理 chrome_options.add_…
/*设置与获取Cookie*/ var Cookie ={} Cookie.write = function(key, value, duration){ var d = new Date(); d.setTime(d.getTime()+1000*60*60*24*30); document.cookie = key + "=" + encodeURI(value) + "; expires=" + d.toGMTString(); }; Cookie.read…
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取), qrcode.js 是实现二维码数据计算的核心类, jquery.qrcode.js 是把它用jquery方式封装起来的,用它来实现图形渲染,其实就是画图(支持canvas和table两种方式) 支持的功能主要有: text     : "https://github.com/jero…
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取), qrcode.js 是实现二维码数据计算的核心类, jquery.qrcode.js 是把它用jquery方式封装起来的,用它来实现图形渲染,其实就是画图(支持canvas和table两种方式) 支持的功能主要有: render : "canvas",//设置渲染方式 wid…
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用python 链接 Yiner224 2012年11月22日提问 显示评论 (4条) 您还没有登录, 请登录后添加评论 得票数 时间先后 7 个回答 3赞 踩 采纳 如果对抓取的性能没有什么要求的话, 尝试一下selenium或者watir吧. web自动化测试脚本用好了可以做很多事…
原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/deep-love/index.html 获直接扫二维码君 用异步ajax的方式获取数字签名 异步的方式好 1.前后端分离啊 2.一个服务可以供多个微信公众帐号的数字签名服务 在服务器端用NodeJS跑起一个数字签名生成服务,web端用ajax方式请求NodeJS服务获取数字签名信息 得到信息后配置微信JS-SD…
npm全称为Node Packaged Modules.它是一个用于管理基于node.js编写的package的命令行工具.其本身就是基于node.js写的,这有点像gem与ruby的关系. 在我们的项目中,需要使用一些基于node.js的javascript库文件,就需要npm对这些依赖库进行方便的管理.由于我们的开发环境由于安全因素在访问一些网站时需要使用代理,其中就包括npm的repositories网站,所以就需要修改npm的配置来加入代理. 下面简要介绍下npm的配置以及如何设置代理.…
js生成二维码 jquery.qrcode.js可以快速使用页面生成二维码.但改项目有两个小问题:1.不支持中文:2.不支持二维码中间生成图片. 支持中文的jquery-qrcode jquery.qrcode.js默认不支持中文.这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt()这个方式进行编码转换的, 而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,英文是没有问题,如果是中文,一般情况下Unic…
1.二维码概念 二维码/二维条码是用某种特定的集合图形按一定规律在平面上(二维方向上)分布的黑白相间的图形记录数据符号信息的图片. 黑线是二进制的1,空白的地方是二进制的0,通过1.0这种数据组合用于存储数据. 2.二维码分类: 二维码有不同的码制,就码制的编码原理而言,通常分为三类: 1.线性堆叠式二维码 2.矩阵式二维码(常用)  黑线.点是二进制的1,空白的地方是二进制的0,通过1.0这种数据组合用于存储数据. 3.邮政码.一般用于邮件编码 三.QRCode简介: qrcode是日本公司研…
http://www.cnblogs.com/xcsn/archive/2013/08/14/3258035.html http://www.jb51.net/article/64928.htm 使用jquery-qrcode生成二维码   目录导航 一.使用jquery-qrcode生成二维码 二.JS生成中文二维码 一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/j…
phantomjs 可通过以下设置代理ip #coding=utf-8import osimport reimport timeimport requestsfrom scrapy.selector import HtmlXPathSelectorfrom scrapy.http import HtmlResponsefrom selenium import webdriverfrom selenium.webdriver.common.proxy import ProxyType import…
Mybatis源码解析(三) -- Mapper代理类的生成   在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject()方法来获取到Mapper的代理类并注入到Spring容器中的.在学习本章之前我们先提出以下几点问题: 1. Mapper接口是如何被加载 到 Configuration 中的? 2. Mapper代理类是如何生成的? 3. Mapper代理类是如何实现接口方法的?    本章内容就是围绕着上面三个…
一.问题发现 近期我在做代理池的时候,发现了一种以前没有见过的反爬虫机制.当我用常规的requests.get(url)方法对目标网页进行爬取时,其返回的状态码(status_code)为521,这是一种以前没有见过的状态码.再输出它的爬取内容(text),发现是一些js代码.看来是新问题,我们来探索一下.   状态码和爬取内容.png 二.原理分析 打开Fiddler,抓取访问网站的包,我们发现浏览器对于同一网页连续访问了两次,第一次的访问状态码为521,第二次为200(正常访问).看来网页加…
WebDiver 不能操作本地 Windows 控件,但对于浏览器上的控件也不是都可以操作的.比如浏览器的滚动条,虽然 WebDriver 提供操作浏览器的前进和后退按钮,但对于滚动条并没有提供相应用的方法.那么在这种情况下就可以借助 JavaScript 方法来控制浏览器滚动条.WebDriver 提供了 execute_script()方法来执行 JavaScript 代码. 一般用到操作滚动条的会两个场景: 注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方. 要操…