js2py和 selenium
js2py
-
簡(jiǎn)介
- js2py是純python實(shí)現(xiàn)的庫(kù),用于在python中運(yùn)行js代碼,本質(zhì)上是將js代碼翻譯成python代碼
-
用法
-
在python中使用js函數(shù)
import js2py js_add = """ function add(a,b){ return a+b } """ py_add = js2py.eval_js(js_add) print(py_add(1,2)) # 變量="""js函數(shù)""" # 變量1 = js2py.eval_js(變量), 將js函數(shù)翻譯成python函數(shù) # 調(diào)用變量1 js_var = """ var a = 'hello world' """ py_var = js2py.eval_js(js_var) print(py_var)
-
js代碼翻譯
import js2py print(js2py.translate_js("console.log('hello world')")) # 將js文件翻譯為Python腳本 js2py.translate_file('test.js', 'test.py')
-
動(dòng)態(tài)html技術(shù)
- 爬蟲(chóng)思路總結(jié)
- 1 準(zhǔn)備目標(biāo)url
- 頁(yè)碼總數(shù)明確,找到頁(yè)面的規(guī)律來(lái)獲取url
- 頁(yè)碼總數(shù)不明確,如果url比較少可以放在列表中遍歷。通過(guò)xpath來(lái)提取頁(yè)碼
- 2 向目標(biāo)的url發(fā)送請(qǐng)求
- 隨機(jī)添加UA
- 代理IP
- 添加cookie
- 3 提取數(shù)據(jù)
- 確定數(shù)據(jù)位置
- 數(shù)據(jù)在當(dāng)前的url當(dāng)中我們直接發(fā)起請(qǐng)求
- 數(shù)據(jù)不在當(dāng)前url中
- 通過(guò)network來(lái)分析數(shù)據(jù)
- 通過(guò)search來(lái)查詢(xún)我們需要的數(shù)據(jù)
- re,xpath,bs4
- 確定數(shù)據(jù)位置
- 4 保存數(shù)據(jù)
- html,txt,csv
- 數(shù)據(jù)庫(kù)mysql mongodb redis
- 1 準(zhǔn)備目標(biāo)url
-
爬蟲(chóng)建議
盡量減少請(qǐng)求次數(shù)
- 保存獲取到的HTML,供查錯(cuò)和重復(fù)使用
關(guān)注網(wǎng)站的所有類(lèi)型的頁(yè)面
- H5頁(yè)面
- APP
多偽裝
- 代理IP
- 隨機(jī)請(qǐng)求頭
利用多線程分布式
- 在不被發(fā)現(xiàn)的情況下我們盡可能的提高速度
-
ajax基本介紹
-
動(dòng)態(tài)了解HTML技術(shù)
JS
- 是網(wǎng)絡(luò)上最常用的腳本語(yǔ)言,它可以收集用戶(hù)的跟蹤數(shù)據(jù),不需要重載頁(yè)面直接提交表單,在頁(yè)面嵌入多媒體文件,甚至運(yùn)行網(wǎng)頁(yè)
jQuery
- jQuery是一個(gè)快速、簡(jiǎn)介的JavaScript框架,封裝了JavaScript常用的功能代碼
ajax
- ajax可以使用網(wǎng)頁(yè)實(shí)現(xiàn)異步更新,可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新
-
獲取ajax數(shù)據(jù)的方式
1.直接分析ajax調(diào)用的接口。然后通過(guò)代碼請(qǐng)求這個(gè)接口。
2.使用Selenium+chromedriver模擬瀏覽器行為獲取數(shù)據(jù)
方式 優(yōu)點(diǎn) 缺點(diǎn) 分析接口 直接可以請(qǐng)求到數(shù)據(jù)。不需要做一些解析工作。代碼量少,性能高 分析接口比較復(fù)雜,特別是一些通過(guò)js混淆的接口,要有一定的js功底。容易被發(fā)現(xiàn)是爬蟲(chóng)。 selenium 直接模擬瀏覽器的行為。瀏覽器能請(qǐng)求到的,使用selenium也能請(qǐng)求到。爬蟲(chóng)更穩(wěn)定。 代碼量多。性能
-
-
Phantomjs快速入門(mén)
from selenium import webdriver import time driver = webdriver.PhantomJS() # 打開(kāi)網(wǎng)站 driver.get('https://www.baidu.com/') # 定位操作和輸入內(nèi)容 driver.find_element_by_id('kw').send_keys('中國(guó)') # 點(diǎn)擊搜索 driver.find_element_by_id('su').click() # time.sleep(10) # 網(wǎng)站截屏 # driver.save_screenshot('baidu.png')。 # 查看請(qǐng)求的url地址 print(driver.current_url) # 查看網(wǎng)頁(yè)源碼 print(driver.page_source)
-
selenium快速入門(mén)
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.find_element_by_id('kw').send_keys('中國(guó)') driver.find_element_by_id('su').click() # 窗口最大化 driver.maximize_window() # 窗口最小化 driver.minimize_window() time.sleep(4) # 推出當(dāng)前窗口 driver.close() # 推出瀏覽器 time.sleep(2) driver.quit()