日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程

發布時間:2023/12/18 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章摘要:其實這里casperjs與python沒有直接關系,主要依賴casperjs調用phantomjs webkit獲取html文件內容。長期以來,爬蟲抓取 客戶端javascript渲染生成的html頁面 都極為 困難, Java里面有 HtmlUnit, 而Python里,我們可以使用獨立的跨平臺的CasperJS。

創建site.js(接口文件,輸入:url,輸出:html file)

//USAGE: E:\toolkit\n1k0-casperjs-e3a77d0\bin>python casperjs site.js --url=http://spys.ru/free-proxy-list/IE/ --outputfile='temp.html'

var fs = require('fs');

var casper = require('casper').create({

pageSettings: {

loadImages: false,

loadPlugins: false,

userAgent: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER'

},

logLevel: "debug",//日志等級

verbose: true // 記錄日志到控制臺

});

var url = casper.cli.raw.get('url');

var outputfile = casper.cli.raw.get('outputfile');

//請求頁面

casper.start(url, function () {

fs.write(outputfile, this.getHTML(), 'w');

});

casper.run();

python 代碼, checkout_proxy.py

import json

import sys

#import requests

#import requests.utils, pickle

from bs4 import BeautifulSoup

import os.path,os

import threading

#from multiprocessing import Process, Manager

from datetime import datetime

import traceback

import logging

import re,random

import subprocess

import shutil

import platform

output_file = os.path.join(os.path.dirname(os.path.realpath(__file__)),'proxy.txt')

global_log = 'http_proxy' + datetime.now().strftime('%Y-%m-%d') + '.log'

if not os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)),'logs')):

os.mkdir(os.path.join(os.path.dirname(os.path.realpath(__file__)),'logs'))

global_log = os.path.join(os.path.dirname(os.path.realpath(__file__)),'logs',global_log)

logging.basicConfig(level=logging.DEBUG,format='[%(asctime)s] [%(levelname)s] [%(module)s] [%(funcName)s] [%(lineno)d] %(message)s',filename=global_log,filemode='a')

log = logging.getLogger(__name__)

#manager = Manager()

#PROXY_LIST = manager.list()

mutex = threading.Lock()

PROXY_LIST = []

def isWindows():

if "Windows" in str(platform.uname()):

return True

else:

return False

def getTagsByAttrs(tagName,pageContent,attrName,attrRegValue):

soup = BeautifulSoup(pageContent)

return soup.find_all(tagName, { attrName : re.compile(attrRegValue) })

def getTagsByAttrsExt(tagName,filename,attrName,attrRegValue):

if os.path.isfile(filename):

f = open(filename,'r')

soup = BeautifulSoup(f)

f.close()

return soup.find_all(tagName, { attrName : re.compile(attrRegValue) })

else:

return None

class Site1Thread(threading.Thread):

def __init__(self,outputFilePath):

threading.Thread.__init__(self)

self.outputFilePath = outputFilePath

self.fileName = str(random.randint(100,1000)) + ".html"

self.setName('Site1Thread')

def run(self):

site1_file = os.path.join(os.path.dirname(os.path.realpath(__file__)),'site.js')

site2_file = os.path.join(self.outputFilePath,'site.js')

if not os.path.isfile(site2_file) and os.path.isfile(site1_file):

shutil.copy(site1_file,site2_file)

#proc = subprocess.Popen(["bash","-c", "cd %s && ./casperjs site.js --url=http://spys.ru/free-proxy-list/IE/ --outputfile=%s" % (self.outputFilePath,self.fileName) ],stdout=subprocess.PIPE)

if isWindows():

proc = subprocess.Popen(["cmd","/c", "%s/casperjs site.js --url=http://spys.ru/free-proxy-list/IE/ --outputfile=%s" % (self.outputFilePath,self.fileName) ],stdout=subprocess.PIPE)

else:

proc = subprocess.Popen(["bash","-c", "cd %s && ./casperjs site.js --url=http://spys.ru/free-proxy-list/IE/ --outputfile=%s" % (self.outputFilePath,self.fileName) ],stdout=subprocess.PIPE)

out=proc.communicate()[0]

htmlFileName = ''

#因為輸出路徑在windows不確定,所以這里加了所有可能的路徑判斷

if os.path.isfile(self.fileName):

htmlFileName = self.fileName

elif os.path.isfile(os.path.join(self.outputFilePath,self.fileName)):

htmlFileName = os.path.join(self.outputFilePath,self.fileName)

elif os.path.isfile(os.path.join(os.path.dirname(os.path.realpath(__file__)),self.fileName)):

htmlFileName = os.path.join(os.path.dirname(os.path.realpath(__file__)),self.fileName)

if (not os.path.isfile(htmlFileName)):

print 'Failed to get html content from http://spys.ru/free-proxy-list/IE/'

print out

sys.exit(3)

mutex.acquire()

PROXYList= getTagsByAttrsExt('font',htmlFileName,'class','spy14$')

for proxy in PROXYList:

tdContent = proxy.renderContents()

lineElems = re.split('[<>]',tdContent)

if re.compile(r'\d+').search(lineElems[-1]) and re.compile('(\d+\.\d+\.\d+)').search(lineElems[0]):

print lineElems[0],lineElems[-1]

PROXY_LIST.append("%s:%s" % (lineElems[0],lineElems[-1]))

mutex.release()

try:

if os.path.isfile(htmlFileName):

os.remove(htmlFileName)

except:

pass

if __name__ == '__main__':

try:

if(len(sys.argv)) < 2:

print "Usage:%s [casperjs path]" % (sys.argv[0])

sys.exit(1)

if not os.path.exists(sys.argv[1]):

print "casperjs path: %s does not exist!" % (sys.argv[1])

sys.exit(2)

if os.path.isfile(output_file):

f = open(output_file)

lines = f.readlines()

f.close

for line in lines:

PROXY_LIST.append(line.strip())

thread1 = Site1Thread(sys.argv[1])

thread1.start()

thread1.join()

f = open(output_file,'w')

for proxy in set(PROXY_LIST):

f.write(proxy+"\n")

f.close()

print "Done!"

except SystemExit:

pass

except:

errMsg = traceback.format_exc()

print errMsg

log.error(errMsg)

總結

以上是生活随笔為你收集整理的python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丰满人妻av一区二区三区 | 免费黄色视屏 | 视频一区国产 | 欧美综合视频在线观看 | 毛片免费全部无码播放 | 国产网站视频 | 激情欧美一区二区免费视频 | 精品一卡二卡 | 五月天综合视频 | 18视频在线观看男男 | 美女搡bbb又爽又猛又黄www | 国产精品视频 | 亚洲综合色自拍一区 | 久久久久久久久久av | 国产三极片 | 特黄特色大片免费视频大全 | 深夜视频在线观看免费 | 日韩精品――色哟哟 | 日韩中文字 | 激情伊人五月天 | 国产农村妇女毛片精品久久麻豆 | 欧美a在线| 欧美日韩国产三级 | 成人性生交大片免费卡看 | 精品视频在线观看 | 国产乱码精品一区二区三区五月婷 | 欧美日韩丝袜 | 国产精品国产精品国产 | 亚洲综合站| 高清一区二区视频 | 国产91精品一区二区麻豆亚洲 | 黄色免费观看网站 | 蜜桃一区二区三区 | 91精品婷婷国产综合久久 | 搞黄视频在线观看 | 国产普通话bbwbbwbbw | 国产综合精品一区二区三区 | 天天插插 | www.爱操 | 日韩中文三级 | 亚洲伊人色 | 在线视频导航 | 岛国av在线播放 | 国产一区二区三区免费在线观看 | 国产一区二区伦理 | 中文字幕第一页久久 | 青青视频在线免费观看 | 精品日韩一区二区三区四区 | 国产h片在线观看 | 国产欧美综合视频 | 欧美日韩黄色大片 | 国产精品啪 | 亚洲精品一区二区三区蜜桃 | 九九九九九伊人 | 中文字幕2018 | 伊人亚洲精品 | 91禁动漫在线 | 国产精品高潮呻吟久久久 | 秋霞国产一区 | 欧美人与性动交α欧美片 | 6080成人| 美腿丝袜一区二区三区 | 麻豆91视频 | 欧美精品久久99 | 你操综合 | 国产网站在线免费观看 | 午夜av激情 | 日操操 | 午夜激情视频网 | 国产电影一区二区三区 | 午夜精品久久久久久久99黑人 | 国产成人免费 | 丁香婷婷激情 | 成人免费黄色大片v266 | 秋霞电影网一区二区 | 黄色片在哪看 | 国产又黄又粗 | 久久成人人人人精品欧 | 日本亲与子乱ay中文 | 色综合图区 | 大屁股一区二区三区 | 五月婷婷综 | 色哟哟视频在线 | 久久久久亚洲AV成人无码国产 | 又污又黄的网站 | 国产精品成人69xxx免费视频 | 日韩精品一区二区三区视频 | 成人黄色小说在线观看 | 丝袜天堂 | 综合精品在线 | 欧美香蕉在线 | 国产黄色一区 | 国产传媒一区 | 污网站免费观看 | 亚洲天天操 | 亚洲第一区av | 天天舔天天操 | 日本中文字幕在线视频 | 成人深夜福利视频 |