Pythonでスクレイピング時にJavaScriptが必要か調べる
https://imabari.hateblo.jp/entry/2018/12/11/103841
のプログラムを利用
Javascriptのレンダリングにより
CSS 6 件 見つかりました
※requests-html, selenium, scrapy-splashでスクレイピングしてください
<b>Nightcore</b> mod enabled!
<b>DoubleTime</b> mod enabled!
<b>DoubleTime</b> mod enabled!
<b>Nightcore</b> mod enabled!
<b>Hidden</b> mod enabled!
<b>No Fail</b> mod enabled!
bタグの中にPerformanceの数値は含まれていません
python
1 from requests_html import HTMLSession
2
3 # URLを入力
4 url = 'https://osu.ppy.sh/users/8341091'
5
6 # CSSまたはXPATHセレクタを入力
7 css = 'b'
8 xpath = ''
9
10
11 def view ( data ) :
12
13 for i in data :
14
15 print ( i . html )
16
17
18 def check ( message , base , java ) :
19
20 base_cnt = len ( base )
21 java_cnt = len ( java )
22
23 if base_cnt > 0 :
24
25 print ( message , base_cnt , '件 見つかりました' )
26 view ( base )
27
28 elif java_cnt > 0 :
29
30 print ( 'Javascriptのレンダリングにより' )
31 print ( message , java_cnt , '件 見つかりました' )
32 print ( '※requests-html, selenium, scrapy-splashでスクレイピングしてください' )
33 view ( java )
34
35 else :
36
37 print ( message , '見つかりません。セレクタをご確認ください。' )
38
39
40 if __name__ == '__main__' :
41
42 session = HTMLSession ( )
43 r = session . get ( url )
44
45 with open ( '01_base.html' , mode = 'w' , encoding = 'utf-8' ) as fw :
46 fw . write ( r . html . html )
47
48 # CSSセレクタ
49 if css :
50
51 base_css = r . html . find ( css )
52
53 # XPATH
54 if xpath :
55
56 base_xpath = r . html . xpath ( xpath )
57
58 # Javascriptレンダリング
59 r . html . render ( )
60
61 with open ( '02_java.html' , mode = 'w' , encoding = 'utf-8' ) as fw :
62 fw . write ( r . html . html )
63
64 # CSSセレクタ
65 if css :
66
67 java_css = r . html . find ( css )
68 check ( 'CSS' , base_css , java_css )
69
70 # XPATH
71 if xpath :
72
73 java_xpath = r . html . xpath ( xpath )
74 check ( 'XPATH' , base_xpath , java_xpath )
75