[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
627: デフォルトの名無しさん [sage] 2020/08/13(木) 16:19:08.99 ID:HLH3bdVq その出力先(ターミナル?コンソール?)は、そもそもシフトJISテキストを表示できるのか? できない場合は、プログラムは関係なく、ターミナルが文字化けする。 ためしにtext.htmlのようなファイルに出力してから、その内容を確認したら? http://mevius.5ch.net/test/read.cgi/tech/1548981877/627
628: デフォルトの名無しさん [sage] 2020/08/13(木) 16:44:17.95 ID:DQVPr3Tq 前にやろうとして諦めた pythonだと簡単 try: str_sjis = str.encode("CP932") except UnicodeEncodeError: print str.encode("utf-8") http://mevius.5ch.net/test/read.cgi/tech/1548981877/628
629: デフォルトの名無しさん [sage] 2020/08/13(木) 16:48:34.24 ID:/BJ4BGZD >>628 そのレベルならPerlでも簡単 絵文字だけ抜き出してHTML特殊文字化 でしょ http://mevius.5ch.net/test/read.cgi/tech/1548981877/629
630: デフォルトの名無しさん [sage] 2020/08/13(木) 17:00:11.25 ID:g8OxF1lY >>627 ターミナルです ファイルに出力してそれをShift-JISとして開いたら文字化けもなく見ることができました 内部的には問題なかったのですね ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1548981877/630
631: デフォルトの名無しさん [sage] 2020/08/13(木) 22:25:11.59 ID:L5UfXSE8 >>628 笑わすんじゃねーw http://mevius.5ch.net/test/read.cgi/tech/1548981877/631
632: デフォルトの名無しさん [sage] 2020/08/15(土) 08:35:13.06 ID:ACgG3ouC プロトタイプ属性の指定がどうやってもできん use feature 'signatures'; sub foo :prototype($$) ($left, $right) { return $left + $right; } これで構文エラーになる理由が全く分からん http://mevius.5ch.net/test/read.cgi/tech/1548981877/632
633: デフォルトの名無しさん [sage] 2020/08/15(土) 10:52:43.99 ID:N6F3nDZU 釣れますか? http://mevius.5ch.net/test/read.cgi/tech/1548981877/633
634: デフォルトの名無しさん [sage] 2020/08/15(土) 12:09:58.58 ID:ybTBju6n 同時には使えんやろ http://mevius.5ch.net/test/read.cgi/tech/1548981877/634
635: デフォルトの名無しさん [sage] 2020/08/15(土) 14:02:00.78 ID:ACgG3ouC え???? use feature 'signatures'; sub NAME(SIG) BLOCK # with signature sub NAME :ATTRS (SIG) BLOCK # with signature, attributes sub NAME :prototype(PROTO) (SIG) BLOCK # with signature, prototype 構文こうなってるけど? http://mevius.5ch.net/test/read.cgi/tech/1548981877/635
636: デフォルトの名無しさん [] 2020/08/15(土) 15:48:07.40 ID:k2IZqmRY 以下のようなhtmlがあるとします <div> <p>AAA</p><p>BBB</p><p>CCC</p><p>DDD</p> </div> <p></p>の構文が4個の場合は、構文を文字列として2個ずつ別の変数に分けたいです。 ($str1 に"<p>AAA</p><p>BBB</p>" 、 $str2に"<p>CCC</p><p>DDD</p>" <p></p>の構文が6個の場合は3個ずつ、8個の場合は4個ずつ・・・と前半と後半で分けて 2つの変数に代入したいのですが、方法はあるでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1548981877/636
637: デフォルトの名無しさん [sage] 2020/08/15(土) 16:19:42.08 ID:V1MJgzDn そら一発では無理だろう 一旦配列に入れてから真ん中で分ける http://mevius.5ch.net/test/read.cgi/tech/1548981877/637
638: デフォルトの名無しさん [] 2020/08/15(土) 16:34:06.12 ID:o+i8zw5r 釣りに引っ掛かるな http://mevius.5ch.net/test/read.cgi/tech/1548981877/638
639: デフォルトの名無しさん [] 2020/08/15(土) 17:04:09.01 ID:gFfdk9Ij >>636 はい。あります。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/639
640: デフォルトの名無しさん [sage] 2020/08/15(土) 19:50:33.78 ID:dQrORRCv ちょろい問題。単なる初心者で釣りなんかじゃないでしょう。 @foo = (); @bar = (); while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*$}{$2}){ push @foo, $1; unshift @bar, $3; } http://mevius.5ch.net/test/read.cgi/tech/1548981877/640
641: デフォルトの名無しさん [sage] 2020/08/15(土) 19:55:02.56 ID:dQrORRCv 2行目間違えてた。 while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*?$}{$2}){ http://mevius.5ch.net/test/read.cgi/tech/1548981877/641
642: デフォルトの名無しさん [sage] 2020/08/15(土) 20:01:49.33 ID:UM/CpThf # 元ネタ my $html = '<html><p>hoge1</p><p>hoge2</p><p>hoge3</p><p>hoge4</p><p>hoge5</p><p>hoge6</p><p>hoge7</p><p>hoge8</p><p>hoge9</p><p>hoge10</p></html>'; # 全部のpタグの中身を引っ掛ける my @p_list = $html =~ /<p>(.+?)<\/p?/g; # 引っかかった数取得 my $size = int(@p_list); # 前半と後半に分けて突っ込む my @mae = @p_list[0..int($size/2)-1]; my @ato = @p_list[int($size/2)..$size-1]; # 結果表示テスト print Dumper([\@mae, \@ato]); http://mevius.5ch.net/test/read.cgi/tech/1548981877/642
643: デフォルトの名無しさん [sage] 2020/08/15(土) 20:03:08.33 ID:UM/CpThf なんだこの糞改行(´・ω・`) # 全部のpタグの中身を引っ掛ける my @p_list = $html =~ /<p>(.+?)<\/p>/g; # 引っかかった数取得 my $size = int(@p_list); # 前半と後半に分けて突っ込む my @mae = @p_list[0..int($size/2)-1]; my @ato = @p_list[int($size/2)..$size-1]; # 結果表示テスト print Dumper([\@mae, \@ato]); http://mevius.5ch.net/test/read.cgi/tech/1548981877/643
644: デフォルトの名無しさん [sage] 2020/08/15(土) 20:11:32.28 ID:UM/CpThf 俺のは巨大なHTMLだとメモリが死ぬ 安全策なら>>640 http://mevius.5ch.net/test/read.cgi/tech/1548981877/644
645: デフォルトの名無しさん [sage] 2020/08/15(土) 20:49:31.50 ID:ODJGcA2C >>644 まあ、そんなに巨大だったら、どっちにしろ死ぬやろけどな。w 本気で心配するならチビチビつままないと。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/645
646: デフォルトの名無しさん [sage] 2020/08/16(日) 03:38:06.22 ID:Degs0Zl8 Ruby の、Nokogiri で、スクレイピングしてみた require 'nokogiri' doc = Nokogiri::HTML(<<EOT) <div> <p>AAA</p><p>BBB</p><p>CCC</p><p>DDD</p> </div> EOT p_tags = doc.css( "div > p" ) # div の直下のp half_cnt = p_tags.length / 2 def make_p_str( ary ) # 要素の配列から、文字列を作る str = "" ary.each do |elem| tmp = elem.to_html # 要素 tmp.chomp! # 末尾の改行を削除する str += tmp # 連結 end str end p str_before = make_p_str( p_tags[ 0...half_cnt ] ) # 前半 p str_after = make_p_str( p_tags[ half_cnt..-1 ] ) # 後半 出力 "<p>AAA</p><p>BBB</p>" "<p>CCC</p><p>DDD</p>" http://mevius.5ch.net/test/read.cgi/tech/1548981877/646
647: デフォルトの名無しさん [sage] 2020/08/16(日) 06:28:33.83 ID:Rc5RuLFB Mechanizeでやれる? http://mevius.5ch.net/test/read.cgi/tech/1548981877/647
648: 646 [sage] 2020/08/16(日) 07:20:54.63 ID:Degs0Zl8 Mechanize とか、curl + Nokogiri でも、静的なページなら、DOM を取得できるけど、 Ajax など、JavaScript で、動的にDOMを組み立てている場合は、 sleep するとか、Selenium WebDriver などを使わないと、DOMを取得できない 5ch などは、空のHTMLを送ってきてから、 Ajax で、ページの内容を取得しているから、 HTMLをスクレイピングするだけでは、タイミングによっては内容が存在しない http://mevius.5ch.net/test/read.cgi/tech/1548981877/648
649: 646 [sage] 2020/08/16(日) 07:27:51.64 ID:Degs0Zl8 Ruby で、curl, Nokogiri の例 require 'nokogiri' html = `curl http://www.example.com/` doc = Nokogiri::HTML( html ) elements = doc.css( "h1" ) puts elements.first.content #=> Example Domain open-uri の例 require 'open-uri' require 'nokogiri' url = 'http://www.example.com/' doc = Nokogiri::HTML(open(url)) http://mevius.5ch.net/test/read.cgi/tech/1548981877/649
650: デフォルトの名無しさん [sage] 2020/08/16(日) 07:29:48.83 ID:Rc5RuLFB プロテクトのつもりは無いんだろうけど、機械にやさしくない 最近だとメルカリのページ取得して、なんで空? と思った http://mevius.5ch.net/test/read.cgi/tech/1548981877/650
651: 646 [sage] 2020/08/16(日) 09:02:04.52 ID:Degs0Zl8 Selenium WebDriver なら、指定した要素が出現するまで、指定した時間だけ待ってくれる 漏れは、10〜20秒ぐらいを指定してる http://mevius.5ch.net/test/read.cgi/tech/1548981877/651
652: デフォルトの名無しさん [sage] 2020/08/16(日) 09:19:07.80 ID:Rc5RuLFB webであれこれしたいなら、javaが近道なのは自明だな http://mevius.5ch.net/test/read.cgi/tech/1548981877/652
653: デフォルトの名無しさん [sage] 2020/08/16(日) 13:18:51.97 ID:YKxJCnVG Javaは、なにをするにしても遠回りやろ。w http://mevius.5ch.net/test/read.cgi/tech/1548981877/653
654: デフォルトの名無しさん [sage] 2020/08/16(日) 14:20:54.02 ID:bYLilpPQ 逆にPerlできないことってなんだ? ライブラリは揃ってるものとして http://mevius.5ch.net/test/read.cgi/tech/1548981877/654
655: デフォルトの名無しさん [sage] 2020/08/16(日) 15:22:58.74 ID:9u3LM4y1 あんまりない 弱いのはライブラリ面なので言語的に不足してる機能はそれほどない http://mevius.5ch.net/test/read.cgi/tech/1548981877/655
656: デフォルトの名無しさん [sage] 2020/08/16(日) 16:02:30.33 ID:0524gJdA CPANを探してなかったという経験がないしな http://mevius.5ch.net/test/read.cgi/tech/1548981877/656
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 346 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s