LoginSignup
3
3

More than 3 years have passed since last update.

【Webスクレイピング】阿部寛のHPで、jQueryを実行

Last updated at Posted at 2019-05-20

概要

Webスクレイピングをする際に、ページ内でjavascriptを実行したい時がある。
WebページでjQuery等のライブラリを使っている場合は、そのライブラリを利用してDOM操作が簡単に行えるが、ライブラリを利用していないページでは、素のjavascriptを実行してDOM操作を行わなければならない。
…それは面倒だという人向けの記事。

方法

以下のjavascriptをWebスクレイピングしたいページで実行すればOK!

function jquery_exe(){
    /*
      ここに実行したい処理をかく!!!
    */
};
function require(uri) {
    var js = document.createElement("script");
    js.type = "text/javascript";
    js.src = uri + "?v=" + new Date().getTime().toString();
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(js);
};
require("https://code.jquery.com/jquery-3.4.1.js");
setTimeout(jquery_exe, 1000);

Python3での実装(サンプルコード)

# -*- coding: utf8 -*-
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_webdriver = './driver/chromedriver.exe'
options = Options()
options.add_argument('--headless')

# webスクレイング対象url
url = ''

# 実行したいスクリプト
java_script = '\
function jquery_exe(){\
    /*\
      ここに実行したい処理をかく!!!\
    */\
};\
function require(uri) {\
    var js = document.createElement("script");\
    js.type = "text/javascript";\
    js.src = uri + "?v=" + new Date().getTime().toString();\
    var head = document.getElementsByTagName("head")[0];\
    head.appendChild(js);\
};\
require("http://code.jquery.com/jquery-3.4.1.js");\
setTimeout(jquery_exe, 1000);\
'
driver = webdriver.Chrome(executable_path="{0}".format(chrome_webdriver), options=options)        
# スクレイピング対象ページを開く
driver.get(url)
# スクリプト実行
driver.execute_script(java_script)

# キャプチャを取得
driver.set_window_size(1280, 1400)
capture_img_name = './{0}.png'.format('Capture')
driver.save_screenshot(capture_img_name)

driver.quit()

サンプルコードを元に、以下のjavascriptを某HPで実行してみる


$("body > h1").html("<ruby>阿部<rt>あべ</rt></ruby> <ruby>寛<rt>ひろし</rt></ruby>のホームページ");

【Capture】
sample.png

結果

jQueryのコードで、しっかりとルビを振ることが出来た。

参考

https://petitviolet.hatenablog.com/entry/20130418/1366288852
http://abehiroshi.la.coocan.jp/top.htm

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3