1. 程式人生 > >爬蟲採集-基於webkit核心的客戶端Ghost.py [爬蟲例項]

爬蟲採集-基於webkit核心的客戶端Ghost.py [爬蟲例項]

http://rfyiamcool.blog.51cto.com/1030776/1287810

對與要時不時要抓取頁面的我們來說,是痛苦的~

由於目前的Web開發中AJAX、Javascript、CSS的大量使用,一些網站上的重要資料是由Ajax或Javascript動態生成的,並不能直接通過解析html頁面內容就能獲得(例如採用urllib2,mechanize、lxml、Beautiful Soup )。要實現對這些頁面資料的爬取,爬蟲必須支援Javacript、DOM、HTML解析。

比如: 像監控的資料就不能用簡單的curl和urllib解析到的。。。  

153204615.jpg

還有這個用ajax 渲染的頁面,用urllib2直接解析不了的。

153356238.jpg

常見的抓資料的方法:

urllib2+urlparse+re

最原始的辦法,其中urllib2是python的web庫、urlparse能處理url、re是正則庫,這種方法寫起來比較繁瑣,但也比較“實在”

urllib2+beautifulsoup

這裡的得力干將是beautifulsoup,beautifulsoup可以非常有效的解析HTML頁面,就可以免去自己用re去寫繁瑣的正則等。

Mechanize+BeautifulSoup

Mechanize是對於urllib2的部分功能的替換,使得除了http以外其他任何連線也都能被開啟,也更加動態可配置

其實像上面的頁面,要是不嫌麻煩,可以從頁面狂找介面,下出來的大多是xml的格式,然後你再費勁的去解析。。。是在他折騰了。

這時候大家可以用 webkit核心的web 客戶端。  他會像真正的瀏覽器一樣來解析頁面的。

WebKit: Safari, Google Chrome,傲遊3 360瀏覽器 等等都是基於 Webkit 核心開發。

我們一般是終端取值的,這些也有不少封裝好的工具

Pyv8PythonWebKitSelenium,PhantomJS,Ghost.py  等等。。。。

我這裡推薦用ghost.py 。。。。 因為他夠直接和實用

發現國內webkit的資料很少,ghost.py的資料就更少了,那我就根據官方的文件,簡單的翻譯下 ~

一個小例子,感受下Ghost~

1 2 3 4 from ghost import Ghost ghost = Ghost() page, extra_resources = ghost.open("http://xiaorui.cc") assert page.http_status==200 and 'xiaorui' in ghost.content

173049454.png

安裝Ghost.py 以及相關的東東~~

用webkit,我們需要有pyqt或者是PySide

這些都安裝好了後,再開始  

運氣好的直接 pip install Ghost.py

運氣不好的:

中間會遇到好多蛋疼的問題,大家多搜搜~

要是解決不了了,請回帖哈~

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.14.6/sip-4.14.6.tar.gz tar zxvf sip-4.14.6.tar.gz cd sip-4.14.6 python configure.py make sudo make install wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10.1/PyQt-mac-gpl-4.10.1.tar.gz tar zxvf PyQt-mac-gpl-4.10.1.tar.gz cd PyQt-mac-gpl-4.10.1 python configure.py

相關推薦

爬蟲採集-基於webkit核心客戶Ghost.py [爬蟲例項]

http://rfyiamcool.blog.51cto.com/1030776/1287810 對與要時不時要抓取頁面的我們來說,是痛苦的~ 由於目前的Web開發中AJAX、Javascript、CSS的大量使用,一些網站上的重要資料是由Ajax或J

Redis基於Java的客戶SDK收集

和集 nts core log 部分 lan 使用 redis 不用 如果要找這類的SDK,第一反應應該直奔官網,找一下看下有什麽推薦。先找最權威的回答,找不到再嘗試民間方案。 就Redis來說,官方已經提供了一個列表包括市面上絕大多數語言的SDK,可以參考以下網址看Ja

【網絡爬蟲入門02】HTTP客戶庫Requests的基本原理與基礎應用

多應用 多服務器 技術學 用戶 iis unicode licensed content sed 【網絡爬蟲入門02】HTTP客戶端庫Requests的基本原理與基礎應用 廣東職業技術學院 歐浩源 1、引言 實現網絡爬蟲的第一步就是要建立網絡連接並向服務器或網頁等

基於socket.io客戶與服務的相互通訊

dem send ins 返回 on() .com cal selector req socket.io是對websocket的封裝,用於客戶端與服務端的相互通訊。官網:https://socket.io/。 下面是socket.io的用法: 1、由於使用express

基於TCP的客戶和服務資料傳輸

功能描述: 從客戶端向服務端傳送字串,服務端接收之後,把字串轉成大寫,並返回給客戶端, 客戶端程式碼 import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea

WebApiThrottle限流框架——基於IP和客戶key的端點限流

如果同一個ip的客戶端,在同一秒內,呼叫了2次api/values,其最後一次的呼叫將會被拒絕掉。 如果想介面通過唯一key去識別限制客戶端,忽略客戶端的ip地址限制,應該配置IpThrottling為false。 config.MessageHandlers.Add(n

linux環境下搭建一個基於tcp的客戶和伺服器

客戶端 //TCP 客戶端程式碼 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #in

WebService基於Eclipse的客戶程式碼生成

很多剛剛接觸WebService的人對於生成客戶端的呼叫程式碼很懵懂,下面我就獻醜一小下: 1.首先我先新建了一個WebService專案: 簡單的介面以及實現類的,之後我們就掛起這個專案,得到我們需要給出的wsdl 好,我們所要訪問的所有資訊都在這個裡邊,但是我

基於CoAP協議客戶/服務的demo(Java版)

概述:CoAP是為物聯網而生,短小精悍,它底層基於UDP協議的,其它具體參考百度百科,本例子是基於Californium框架。1、先決條件java環境eclipse工具Maven外掛(有最好,不需要手動下載jar引入,沒有的話手動引入)2、下載Californium框架核心j

grpc基於golang的客戶服務整體預覽

proto檔案: /* * @Title: 服務介面說明 * @Description: 介面目錄 */ service SpotDataHandler { rpc GetProductInfo(GetProductInfoRequest) ret

C語言實現服務客戶進行TCP通訊例項

 本文給出一個很實用的C語言實現的服務端和客戶端進行TCP通訊的小例子。具體實現上非常簡單,只是平時編寫類似程式,具體步驟經常忘記,還要總是查,暫且將其記下來,方便以後參考。 (1)客戶端程式,編寫一個檔案client.c,內容如下: #include <stdl

PHP-Socket服務客戶傳送接收通訊例項詳解

Socket介紹 什麼是socket 所謂socket通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控制代碼。應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 在Internet上的主機一般運行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Soc

基於AIX系統的應用日誌採集-Logstash伺服器客戶配置

1.服務端 1.1.需要檔案(/opt/file):   logstash-forwarder.crt   logstash-forwarder.key    1.2. 執行命令生成金鑰檔案keystor

基於UDT connect連接通信以及文件傳輸--客戶

文章 pan detail break fin 文件名 plain mes oca 上面一篇文章中提出了服務端的,其實這裏沒有嚴格意義的服務端和客戶端之分,因為我在代碼中是基於UDP的,不存在服務端與客戶端,兩個都是對等的,只是我這裏進行一下簡單的區分而已。在這裏,客戶端所

基於thrift的java和python分別作為客戶和服務的調用實現

Coding except arr pes com ssa utf-8 encoding 中文亂碼 前面已經實現了純java的thrift的實現。 現在實現實現一下python作為客戶端和服務端的thrift的調用 1.python作為客戶端,java作為服務端 java服

一個基於JRTPLIB的輕量級RTSP客戶(myRTSPClient)——實現篇:(六)RTP音視頻傳輸解析層之音視頻數據傳輸格式

客戶端 會有 服務 client 基本 cnblogs 存在 額外 導致 一、差異 本地音視頻數據格式和用來傳輸的音視頻數據格式存在些許差異,由於音視頻數據流到達客戶端時,需要考慮數據流的數據邊界、分包、組包順序等問題,所以傳輸中的音視頻數據往往會多一些字節。 舉個例子

用C#開發基於自動化接口的OPC客戶

pub alt span conn 自定義 ted mov errors 寫代碼 OPC全稱是Object Linking and Embedding(OLE) for Process Control,它的出現為基於Windows的應用程序和現場過程控制應用建立了橋梁。OP

zookeeper總結之客戶執行核心模塊

except pre 執行 strong main amp per bst ply ZooKeeper   ZooKeeper是客戶端操作ZooKeeper服務端的核心類。當用戶向ZooKeeperMain執行相關命令時,最終會交給ZooKeeper執行,其會將用戶請求封裝

Nginx支持反爬蟲並限制客戶的請求的並發數

反爬蟲並限制客戶端請求的並發數cat /usr/local/nginx/conf/agent_deny.conf if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapart

Webkit做到了微信房卡三公源碼搭建的客戶數據庫存儲

post amp 功能 art bbs bit 查看 and eth 微信房卡三公源碼搭建Q1446595067 vx:HZYM2018 目前正在規劃的HTML5標準中有很多令人興奮的特性,我們非常願意將這些特性在Webkit裏加以實現。其中有一個特性,我們覺得目前可以帶給