Ⅰ Python怎麼獲取網頁中js生成的數據
js代碼是需要復js引擎運行制的,Python只能通過HTTP請求獲取到HTML、CSS、JS原始代碼而已。
不知道有沒有用Python編寫的JS引擎,估計需求不大。
我一般用PhantomJS、CasperJS這些引擎來做瀏覽器抓取。
直接在其中寫JS代碼來做DOM操控、分析,以文件方式輸出結果。
讓Python去調用該程序,通過讀文件方式獲得內容。
Ⅱ python selenium 怎麼操作js代碼
調用js方法
execute_script(script, *args)
在當前窗口/框架 同步執行javaScript
腳本:JavaScript的執行。
*參數:適用任何JavaScript腳本。
使用:
driver.execute_script(『document.title』)
使快播登陸用戶名輸入框標紅顯示:
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%2F%3Ft%3Dhome")
#給用戶名的輸入框標紅
js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"
#調用js
driver.execute_script(js)
time.sleep(3)
driver.find_element_by_id("user_name").send_keys("username")
driver.find_element_by_id("user_pwd").send_keys("password")
driver.find_element_by_id("dl_an_submit").click()
time.sleep(3)
driver.quit()
js解釋:
q=document.getElementById(\"user_name\")
元素q的id 為user_name
q.style.border=\"1px solid red\
元素q的樣式,邊框為1個像素紅色
Ⅲ python 用什麼模塊處理網頁的javascript
lxml 配合 html5lib
可以很好的解析 html DOM
但對於js的解析 據我所知現在沒有什麼很成熟的模塊能做這個
解析js肯定不是正則能辦得到的, 比較現實的方案是
從webkit下手, 但光這一個庫就有10+M
(利用webkit自己解析js等解析完之後讀取html dom, 什麼時候解析完,什麼內容需要解析,什麼內容不應該解析是使用的難點)
如果你碰到的js代碼比較簡單
可以自己看看js代碼然後使用python模擬js代碼得到網址
其中使用webkit是最難的(不是簡單顯示界面,需要自己hook)
模擬js其次
lxml是最普遍的了
(這個解析一般的html必須配合其他html解析庫,自帶的那個html解析不是很健壯碰到稍微差點的頁面就不能正確解析)
另外html DOM 裡面 beautifulsoup 是一個比較老道的使用正則實現解析HTML DOM的庫.
Ⅳ python3.0怎麼用json從文件解析
1、說明:
python3通過json模塊load函數來解析文件。
2、代碼示例:
首先編寫一個json文件j.txt,內容如下:
{"errno":1,"errmsg":"操作成功!","data":[]}
python代碼如下:
importjson
withopen('j.txt','r')asfr:
o=json.load(fr)
print(o['errno'])
print(o['errmsg'])
print(len(o['data']))
輸出如下:
1
操作成功!
0
3、函數說明:
load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
反序列化fp(一個.read()包含 - 支持類文件對象一個JSON文件),以一個Python對象。
object_hook是將與被調用的可選功能任何對象文本解碼(一個``dict``)的結果。返回值object_hook將用來代替dict。此功能可用於實現自定義解碼器(例如JSON-RPC級提示)。
object_pairs_hook是將與被調用的可選功能任何對象的結果與對的有序列表字面解碼。該的返回值object_pairs_hook將用來代替dict。
此功能可用於實現依賴於定製解碼器命令該鍵和值對被解碼(例如,collections.OrderedDict會記得插入的順序)。如果object_hook也定義了object_pairs_hook優先。
要使用自定義JSONDecoder子類,與cls指定它kwarg;否則JSONDecoder使用。
4、其它說明:
也可以使用json.loads函數來直接處理字元串,方法如下:
o=json.loads('{"errno":0,"errmsg":"操作成功!","data":[]}')
Ⅳ 如何用Python爬蟲抓取JS動態篩選內容
打開瀏覽器,以google chrome為例,輸入你上面的網址。
然後按F12打開調試窗版口,然後嘗試勾選左邊某一個權選項,馬上可以看到右邊的調試窗口有東西輸出。
找到第一個輸出的行,點擊header,可以看到每一個都是用的post方法。
所以只需要構造相應的header並post上去,就可以得到你想要的數據了。
而這個發放返回的是json數據,然後編碼成dict格式 提取出數據就可以了。