本文目錄一覽:
如何用Python抓取動態頁面信息
解決思路:
有一個思路最為簡單的思路可以動態解析頁面信息。urllib不可以解析動態信息,但是瀏覽器可以。在瀏覽器上展現處理的信息其實是處理好的HTML文
檔。這為我們抓取動態頁面信息提供了很好的思路。在Python中有一個很有名的圖形庫——PyQt。PyQt雖然是圖形庫,但是他裏面
QtWebkit。這個很實用。谷歌的Chrome和蘋果的Safari都是基於WebKit內核開發的,所以我們可以通過PyQt中得QtWebKit
把頁面中的信息讀取加載到HTML文檔中,再解析HTML文檔,從HTML文檔中提取我們想用得信息。
所需材料:
作者本人實用Mac OS X。應該在Windows和Linux平台也可以採用相同的辦法。
1、Qt4 library
Library,而不是Creator。Library在Mac的默認安裝路徑下,應該是/home/username/Developor/,不要改變Qt4的默認安裝路徑。否則可能安裝失敗。
官方網址:
2、SIP、PyQt4
這兩個軟件可以在在PyQt的官網找到。下載的是它的源碼。Mac和Linux需要自己編譯。
下載地址是:
在終端切換到文件解壓後的目錄中。
在終端中輸入
python configure.py
make
sudo make install
進行安裝編譯。
SIP和PyQt4兩個安裝方法相同。但是PyQt4依賴SIP。所以先安裝SIP再安裝PyQt4
1、2兩步完成之後,Python的PyQt4的模塊就安裝好了。在Python shell中輸入import PyQt4看看能不能找到PyQt4的模塊。
3、Spynner
spynner是一個QtWebKit的客戶端,它可以模擬瀏覽器,完成加載頁面、引發事件、填寫表單等操作。
這個模塊可以在Python的官網找到。
下載地址:
解壓後,cd到安裝目錄,然後輸入sudo python configure.py install安裝該模塊。
這樣Spynner模塊就安裝完成了,在python shell中試試import spynner看看該模塊有沒有安裝完成。
Spynner的簡單使用
Spynner的功能十分強大,但是由於本人能力有限,就介紹一下如何顯示網頁的源碼吧。
#! /usr/bin/python
#-*-coding: utf-8 -*-
import spynner
browser = spynner.Browser()
#創建一個瀏覽器對象
browser.hide()
#打開瀏覽器,並隱藏。
browser.load(“”)
#browser 類中有一個類方法load,可以用webkit加載你想加載的頁面信息。
#load(是你想要加載的網址的字符串形式)
print browser.html.encode(“utf-8”)
#browser 類中有一個成員是html,是頁面進過處理後的源碼的字符串.
#將其轉碼為UTF-8編碼
open(“Test.html”, ‘w+’).write(browser.html.encode(“utf-8”))
#你也可以將它寫到文件中,用瀏覽器打開。
browser.close()
#關閉該瀏覽器
通過這個程序,就可以比較容易的顯示webkit處理的頁面HTML源碼了。
spynner應用
下面介紹一下spynner的簡單應用,通過簡單的程序,可以獲取你在瀏覽器中看到的頁面的全部圖片。用HTMLParser、BeautifulSoup等都可以完成HTMLParser文檔的解析。而我選擇HTMParser。
#!/usr/bin/python
import spynner
import HTMLParser
import os
import urllib
class MyParser(HTMLParser.HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == ‘img’:
url = dict(attrs)[‘src’]
name = os.path.basename(dict(attrs)[‘src’])
if name.endswith(‘.jpg’) or name.endswith(‘.png’) or name.endswith(‘gif’):
print “Download…..”, name
urllib.urlretrieve(url, name)
if __name__ == “__main__”:
browser = spynner.Browser()
browser.show()
browser.load(“”)
Parser = MyParser()
Parser.feed(browser.html)
print “Done”
browser.close()
通過這個程序,可以下載你在頁面上看到的全部圖片。簡單的幾行程序就完成了這個艱巨的任務。實現了圖片的批量處理。這真是Python語言的優勢,再艱巨的任務交給第三方吧。
如何用python抓取這個網頁的內容?
Python實現常規的靜態網頁抓取時,往往是用urllib2來獲取整個HTML頁面,然後從HTML文件中逐字查找對應的關鍵字。如下所示:
複製代碼代碼如下:
import urllib2
url=”網址”
up=urllib2.urlopen(url)#打開目標頁面,存入變量up
cont=up.read()#從up中讀入該HTML文件
key1=’a href=”http’#設置關鍵字1
key2=”target”#設置關鍵字2
pa=cont.find(key1)#找出關鍵字1的位置
pt=cont.find(key2,pa)#找出關鍵字2的位置(從字1後面開始查找)
urlx=cont[pa:pt]#得到關鍵字1與關鍵字2之間的內容(即想要的數據)
print urlx
Python使用自定義的cookie和header抓取下載網頁圖片
# -*- coding: UTF-8 -*-
import requests
__author__ = ‘lpe234’
def main():
url = ”
cookies = {
‘login’: ‘yes’,
‘cookie2’: ‘shdjd’,
‘cookie3’: ‘gdhjej’
}
headers = {
‘content-type’: ‘application/json’,
‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36’
}
resp = requests.get(url=url, cookies=cookies, headers=headers)
print resp.content
if __name__ == ‘__main__’:
main()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/278412.html