phantomjs

Scrapy学习-16-动态网页技术

我只是一个虾纸丫 提交于 2020-05-06 03:29:13
Selenium浏览器自动化测试框架 简介   Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。   支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。   这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。   测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本 功能   框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。   使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。   使用简单,可使用Java,Python等多种语言编写用例脚本 安装 1 pip install selenium 官方文档 1 http://selenium-python.readthedocs.io/ 驱动下载 Chrome https://sites.google.com/a/chromium.org/chromedriver/

Python网络爬虫(1):网易云音乐歌单

会有一股神秘感。 提交于 2020-05-02 18:32:56
原文: http://www.cnblogs.com/tuohai666/p/8718107.html 摘要:从零开始写爬虫,初学者的速成指南! 封面: 封面 大家好,《手把手教你写网络爬虫》连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意。本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻松的入门方式。请跟随我们一起踏上爬虫学习的打怪升级之路吧! 介绍 什么是爬虫? 先看看百度百科的定义: 网络爬虫 简单的说网络爬虫(Web crawler)也叫做网络铲(Web scraper)、网络蜘蛛(Web spider),其行为一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。 为什么学习爬虫? 看到这里,有人就要问了:google、百度等搜索引擎已经帮我们抓取了互联网上的大部分信息了,为什么还要自己写爬虫呢?这是因为,需求是多样的。比如在企业中,爬取下来的数据可以作为数据挖掘的数据源。甚至有人为了炒股,专门抓取股票信息。笔者就见过有人为了分析房价,自学编程,爬了绿中介的数据。 在大数据深入人心的时代,网络爬虫作为网络、存储与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。还犹豫什么?让我们开始学习吧! 语言&环境 语言:人生苦短,我用Python。让Python带我们飞! Python urllib

Scrapy-Splash爬虫实战——爬取JS渲染的动态页面信息【附货币基金爬取筛选代码】

≡放荡痞女 提交于 2020-04-26 17:44:53
本文概要 展示了一个使用Scrapy爬取网页信息的例子——爬取天天基金网的货币基金 爬取的信息在JS渲染的动态页面中,使用headless浏览器和Splash配合Scrapy解决问题 提供了docker镜像和Dockerfile,详述过程Dockerfile每一行的设置和其中的坑 仔细阅读可以了解Scrapy的基本用法,配合headless浏览器爬取一切疑难页面,在2.0.1版本下很长一段时间不用去和环境死磕了,直接取用docker镜像吧。 代码 qqhard/hj_spider ​ github.com 任务 由天天基金网的 货基列表页 进入详情页 爬取详情页中一系列信息 Scrapy一般流程 Scrapy目前的版本是2.0.1,其官方文档在 https:// scrapy.org/ 需要python3.5及以上的环境,在linux下需要Ubuntu 14.04及以上。 使用pip和conda很容易安装, pip install Scrapy 即可。 Scrapy提供了脚手架, scrapy startproject tutorial 创建项目,获得如下的目录: tutorial / scrapy . cfg # deploy configuration file tutorial / # project's Python module, you'll import your

2020十大Python面试题,你会几个?

断了今生、忘了曾经 提交于 2020-04-18 09:02:45
0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一IP短时间内访问的频率) 3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成) 4.对部分数据进行加密处理的(数据是乱码) 解决方法: 对于基本网页的抓取可以自定义headers,添加headers的数据 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 动态网页的可以使用selenium + phantomjs 进行抓取 对部分数据进行加密的,可以使用selenium进行截图,使用python自带的pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。 1 urllib 和 urllib2 的区别? urllib 和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。urllib不可以伪装你的User-Agent字符串。 urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。 2 列举网络爬虫所用到的网络数据包,解析包? 网络数据包 urllib、urllib2、requests 解析包 re、xpath、beautiful

学会对VUE的SEO优化,你的网站总是排在前面

喜欢而已 提交于 2020-04-11 17:45:14
​在开始之前,我们先来了解一下什么是SEO。 SEO(Search Engine Optimization):汉译为搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。很大程度上是网站经营者的一种商业行为,将自己或自己公司的排名前移。 说白了就是你的SEO做的越好,当别人搜索某个关键词时,你的网站在搜索结果中就排的越靠前。这是我的网站,有时排在第一,有时第二。 我的网站: www.dzyong.top 公众号: 《前端筱园》 普通的一个前端网站可以通过哪些地方来做优化呢? 1.合理的title、description、keywords <title>邓占勇的博客</title> <meta name="description" content='邓占勇,一名前端工程师,这是我的个人博客,主要分享前端但不限于前端技术。公众号《前端校园》'> <meta name="keywords" content="个人博客,邓占勇,前端,技术,WEB,blog,BLOG,搭建博客,前端技术,VUE博客,邓占勇的博客"> <meta name="anthor" content="邓占勇,2657179843@qq.com"> <meta name="robots" content="博客,前端,blog,个人博客,邓占勇

python数据挖掘系列教程——PySpider框架应用全解

纵然是瞬间 提交于 2020-04-10 08:15:27
全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘系列教程——PySpider框架应用全解。 PySpider介绍 pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面。支持多线程爬取、JS动态解析,提供了可操作界面、出错重试、定时爬取等等的功能 PySpider是binux做的一个爬虫架构的开源化实现。主要的功能需求是: 抓取、更新调度多站点的特定的页面 需要对页面进行结构化信息提取 灵活可扩展,稳定可监控 而这也是绝大多数python爬虫的需求 —— 定向抓取,结构化化解析。但是面对结构迥异的各种网站,单一的抓取模式并不一定能满足,灵活的抓取控制是必须的。为了达到这个目的,单纯的配置文件往往不够灵活,于是,通过脚本去控制抓取是最后的选择。 而去重调度,队列,抓取,异常处理,监控等功能作为框架,提供给抓取脚本,并保证灵活性。最后加上web的编辑调试环境,以及web任务监控,即成为了这套框架。 pyspider的设计基础是: 以python脚本驱动的抓取环模型爬虫 通过python脚本进行结构化信息的提取,follow链接调度抓取控制,实现最大的灵活性 通过web化的脚本编写、调试环境。web展现调度状态 抓取环模型成熟稳定,模块间相互独立,通过消息队列连接

利用PhantomJS进行网页截屏,完美解决截取高度的问题

廉价感情. 提交于 2020-04-03 20:50:40
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。 我们还可以用它来做爬虫哦,大家知道,网页上有些数据是通过执行js渲染出来的,这样的话爬虫去抓取数据的时候就会很麻烦,PhantomJS自带WebKit内核,我们可以利用PhantomJS解决爬虫不能执行js的问题。 这次要说的是他的截图功能 下面是官网提供的 rasterize.js 截图示例: var page = require('webpage').create(), system = require('system'), address, output, size; if (system.args.length < 3 || system.args.length > 5) { console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]'); console.log(' paper (pdf output) examples: "5in

selenium.common.exceptions.TimeoutException: Message: Screenshot: available via screen

无人久伴 提交于 2020-04-03 17:49:43
作用 生成项目所使用的第三方模块及版本号的文件 根据文件安装第三方模块 安装 1 pip install pipreqs 生成依赖文件 在项目目录下 1 pipreqs . /   会生成requirements.txt文件,其中包含了项目所导入的包及版本号 通过指定参数 --encoding=utf8可以解决中文问题 安装依赖文件 1 pip install - r requiements.txt   ps : 项目中不要有中文(包括注释),否则会报错 PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化 , 网络监测 , 网页截屏 ,以及无界面测试等 一.安装: 获取安装包,并解压:  #mkdir ~/bin/  #cd ~/bin/  #wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2  #tar -xjvf phantomjs-1.9.7-linux-x86_64.tar.bz2 将可执行文件放入系统路径:   #sudo

Scrapy实战篇(七)之Scrapy配合Selenium爬取京东商城信息(下)

江枫思渺然 提交于 2020-03-24 11:02:29
之前我们使用了selenium加Firefox作为下载中间件来实现爬取京东的商品信息。但是在大规模的爬取的时候,Firefox消耗资源比较多,因此我们希望换一种资源消耗更小的方法来爬取相关的信息。 下面就使用selenium加PhantomJS来实现之前的相同的逻辑。 这里需要修改的就是spider.py文件,其余的部分并不需要做出修改,我们给phantomjs添加一个User-Agent信息,并且设置不加载图片,这样将会加快渲染的速度。 spider.py from scrapy import Spider,Request from selenium import webdriver class JingdongSpider(Spider): name = 'jingdong' def __init__(self): SERVICE_ARGS = ['--load-images=false', '--disk-cache=true', '--ignore-ssl-errors=true'] self.browser = webdriver.PhantomJS(service_args=SERVICE_ARGS) self.browser.set_page_load_timeout(30) def closed(self,spider): print("spider closed"

在Python中用Selenium执行JavaScript

狂风中的少年 提交于 2020-03-24 08:36:53
Selenium自己不带浏览器, 需要与第三方浏览器结合在一起使用.例如在Firefox上运行Selenium. PhantomJS是一个"无头"浏览器. 它会把网站加载到内存并执行页面上的JavaScript, 但是它不会向用户展示网页的图形界面. 把Selenium和PhantomJS结合在一起, 就可以运行一个非常强大的网络爬虫了, 可以处理cookie, JavaScript,header, 以及任何你需要做的事. Selenium可以从PyPI网站(https://pypi.python.org/simple/selenium)下载Selenium库, 也可以用pip安装. PhantomJS可以从官网下载(http://phantomjs.org/download.html) , PhantomJS不是一个Python库,不能用pip安装. 1 from selenium import webdriver 2 import time 3 4 driver = webdriver.PhantomJS(executable_path=' ') 5 driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") 6 time.sleep(3) 7 print(driver.find_element