phantomjs

python网络爬虫之图片链家在技术.seleninum和PhantonJS

ⅰ亾dé卋堺 提交于 2020-02-22 00:49:26
一.什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from lxml import etree if __name__ == "__main__": url = 'http://sc.chinaz.com/tupian/gudianmeinvtupian.html' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #获取页面文本数据 response = requests.get(url=url,headers=headers) response.encoding = 'utf-8' page_text = response.text #解析页面数据(获取页面中的图片链接) #创建etree对象 tree = etree.HTML(page_text) div_list = tree.xpath('//div[@id="container"]/div')

selenium+phantomjs

天大地大妈咪最大 提交于 2020-02-17 22:51:09
一.爬虫与反爬斗争—反爬策略 1.通过user-agent客户端标识来判断是不是爬虫 方法:封装请求头:user-agent 2.封ip 方法:设置代理ip 3.通过访问频率判断是否是非人类请求 方法:设置爬取间隔 和爬取策略 4.验证码 方法:识别验证码 5.页面请求不再直接渲染,通过前端js异步获取 方法:a通过selenium+phantomjs来获取数据 b.找到数据来源的接口(ajax接口) 二.页面技术操作 1.js一种语言 获取页面的元素,可以对这些页面元素进行操作,网络数据的获取 2.jquery 他是一个js库,这个库可以使得js编程变得容易一些 3.ajax 同步和异步请求 三.selenium+phantomjs 如果要解决页面js的问题,主要需要一个工具,这个工具(具备浏览器的功能)可以帮助我们来运行获取到js 1.什么是selenum selenium是一个web自动化测试工具,但是他本身不具有浏览器功能,相当于一个驱动程序,通过工具可以帮我们自动操作一些具有浏览器功能的外部应用 2.什么是phantomjs phantomjs是内置的无界面浏览器引擎,他可以像浏览器那样加载页面运行页面中的js代码 chromedriver.exe这个是谷歌浏览器驱动程序,通过这个程序可以使得selenium可以调用chrome浏览器。—有界面浏览器。

图片懒加载、selenium&phantomjs

我与影子孤独终老i 提交于 2020-02-15 23:00:45
一.什么是图片懒加载?   - 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 运行结果观察发现,我们可以获取图片的名称,但是链接获取的为空,检查后发现xpath表达式也没有问题,究其原因出在了哪里呢?   - 图片懒加载概念:     图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。   - 网站一般如何实现图片懒加载技术呢?     在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。   - 站长素材案例后续分析:通过细致观察页面的结构后发现,网页中图片的链接是存储在了src2这个伪属性中 import requests from lxml import etree import urllib.request import os import json headers = { 'User-Agent': 'Mozilla

图片懒加载、selenium和PhantomJS

こ雲淡風輕ζ 提交于 2020-02-15 22:59:23
图片懒加载 概念 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源 ,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合, 使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 如何实现   在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片 链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。 爬取方法 抓取伪属性 selenium 什么是selenium 是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作。 环境搭建 1.安装selenum:pip install selenium 2.获取某一款浏览器的驱动程序(以谷歌浏览器为例)    2.1 谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html   2.2 下载的驱动程序必须和浏览器的版本统一,大家可以根据http://blog.csdn.net/huilan_same/article/details

Selenium修改PhantomJS请求头(Headers)

♀尐吖头ヾ 提交于 2020-02-12 11:39:40
Selenium修改PhantomJS请求头(Headers) headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4', 'Connection': 'keep-alive' } cap = DesiredCapabilities.PHANTOMJS.copy()//使用copy()防止修改原代码定义dict for key, value in headers.items(): cap['phantomjs.page.customHeaders.{}'.format( key)] = value browser = webdriver.PhantomJS(desired_capabilities=cap) headers = { 'Accept': 'text/html

Automate browser actions - Clicking the submit button errors - “Click succeeded but Load Failed. ..”

元气小坏坏 提交于 2020-02-05 01:23:29
问题 I'm trying to write a code that automatically logs into two websites and goes to a certain page. I use Splinter. I only get the error with the "Mijn ING Zakelijk" website using PhantomJS as browser type. Until a few days ago the code ran perfectly fine 20 out of 20 times. But since today I'm getting an error. Sometimes the code runs fine. Other times it does not and gives me the "Click succeeded but Load Failed.." error. Here's the full traceback: ## Attempting to login to Mijn ING Zakelijk,

PhantomJS page dump script issue

ぐ巨炮叔叔 提交于 2020-02-02 02:20:12
问题 Digikey has changed their website and now has a javascript that is called onload via post. This killed my former simple java HTML code retriever. I am trying to use PhantomJS to allow the execution of the javascript before saving the HTML/text. var page = new WebPage(), t, address; var fs = require('fs'); if (phantom.args.length === 0) { console.log('Usage: save.js <some URL>'); phantom.exit(); } else { address = encodeURI(phantom.args[0]); page.open(address, function (status) { if (status !=

Scrolling infinite page with Python/PhantomJS/Selenium

一世执手 提交于 2020-01-30 08:43:05
问题 I'm trying to scrape this one (infinite) page (www.mydealz.de) but I cannot get my webdriver to scroll down the page. Im using Python (3.5), Selenium (3.6) and PhantomJS. I already tried several approaches but the webdriver just wont scroll - it just gives me the first page. 1st approach (the ususal scrolling approach): last_height = driver.execute_script("return document.body.scrollHeight") while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(1) new

PhantomJS with Selenium: Message: 'phantomjs' executable needs to be in PATH

坚强是说给别人听的谎言 提交于 2020-01-30 06:36:13
问题 I having trouble installing PhantomJS to my project Following the suggestions from the similar question from so I defined the $PATH variable with executable path cd Users/zkid18/project/venv/venv_name/lib/python3.6/site-packages/phantomjs-2.1.1/bin export PATH=$PWD Then I try to create a driver with a virtual browser import from selenium import webdriver browser = webdriver.PhantomJS() On this step I got an error No such file or directory: 'phantomjs': 'phantomjs' What I am missing? 回答1: You

Selenium WebDriver的使用(一)

我怕爱的太早我们不能终老 提交于 2020-01-29 21:13:29
Selenium WebDriver的相关介绍及资源下载:http://docs.seleniumhq.org/ 在2016年2月份Selenium WebDriver更新到了2.52.0版本,建议在使用旧版本的更新至该版本,在稳定性和性能上提高不少。 Selenium支持驱动众多的浏览器,包括PC、移动端及PhantomJS等。 以在windows下的JAVA开发环境为例,下载http://selenium-release.storage.googleapis.com/2.52/selenium-java-2.52.0.zip,解压后添加到工程中。PC端建议使用Google Chrome和PhantomJS。PhantomJS可以理解为没有界面的Safari(QtWebkit作为渲染引擎,JS引擎是JavascriptCore)。要使Selenium能驱动Google Chrome,还需要根据你的系统环境下载chromedriver,下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads。在本文撰写的时候,chromedriver最新版本为2.21。需要注意的是,2.21版本支持Chrome的版本为v46-50,如果chromedriver和你使用的Chome版本不匹配,程序可能无法正常工作。