python寫爬蟲遇到需要解碼js一些記錄

2022-06-13 09:30:09 字數 1576 閱讀 3296

python 執行 js **

nodejs

安裝方式

先解決 js 環境,這裡推薦安裝 node.js ,安裝方便,執行效率也高。

然後pip install pyexecjs就可以了。

>>> import execjs

>>> execjs.get().name # 檢視呼叫的環境

'node.js (v8)'

>>> ctx = execjs.compile(""" # 執行 js 語句

... function add(x, y)

... """)

>>> ctx.call("add", 1, 2)

3>>> with open('./test.js') as f: # 執行 js 檔案

... ctx = execjs.compile(f.read())

... ctx.call('add', 1, 2)

pyv8

這是 google 官方將 chrome v8 引擎用 python 封裝的庫,和 pyexecjs 相比,這個庫很輕量,不需要額外裝 js 環境,因為 v8 本身就是環境,同時也因為不需要啟動外部環境,執行速度很快。

>>> import pyv8  # 注意大小寫

>>> with pyv8.jscontext() as ctx:

... ctx.eval("""

... function add(x, y)

... """)

... ctx.locals.add(1, 2)

js2py

最後這個庫,作用是將 js **直接轉譯成 python **,這種方式可以擺脫呼叫 js 環境的瓶頸,但遺憾的是如果用於很長的混淆 js **,轉譯過來的大概率會報錯… 所以只建議先嘗試一下,如果報錯及時更換上面的庫。

安裝方式

pip install js2py

使用例子

>>> import js2py

>>> add = js2py.eval_js("""

... function add(x, y)

... """)

>>> add # 可以看到大括號裡已被轉譯

'function add(x, y) '

>>> add(1, 2)

3>>> # 使用下邊這個方法可以輸出轉譯後的**

>>> # 可以儲存到檔案裡,下次不需要再次轉譯

>>> print(js2py.translate_js('var x = 1'))

from js2py.pyjs import *

# setting scope

var = scope( js_builtins )

set_global_object(var)

# code follows:

var.registers(['x'])

var.put('x', js(1.0))

python寫網路爬蟲

注 本文旨在練習正規表示式的簡單使用方法 usr bin evn python coding cp936 def gethtml url 定義gethtml 函式,用來獲取頁面源 page urllib.urlopen url urlopen 根據url來獲取頁面源 html page.read 從...

python做爬蟲難嗎 python寫爬蟲難嗎

所謂網路爬蟲,通俗的講,就是通過向我們需要的url發出http請求,獲取該url對應的http報文主體內容,之後提取該報文主體中我們所需要的資訊。下面是乙個簡單的爬蟲程式 http基本知識 當我們通過瀏覽器訪問指定的url時,需要遵守http協議。本節將介紹一些關於http的基礎知識。http基本流...

用python寫爬蟲(一)初識爬蟲

爬蟲又被稱之為網路蜘蛛 網路機械人等,簡單來說就是模擬客戶端傳送網路請求,接收請求響應,按照一定的規則自動的抓取網際網路資訊的程式。1.從個人角度來說,爬蟲可以做我們的生活助手。2.從商業角度來說,爬蟲能實現巨大的商業價值。網路爬蟲根據系統結構和開發技術大致可以分為四種型別 通用網路爬蟲 聚焦網路爬...