[過去ログ] Perlについての質問箱 64箱目 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
620: 2020/08/02(日)18:54 ID:4gDW5awL(4/4) AAS
効いたな
621(1): 2020/08/02(日)19:26 ID:TAOBMMvc(1) AAS
>>614
数万人の天才が挑戦しているがいまだに達成していない
622: 2020/08/02(日)19:41 ID:hIQzyyzC(1) AAS
>>621
むしろ天才よりも秀才のほうやろ。
本当の天才はそういうことに関わらん気がする。
直感的に不可能か、現実的に意味がないかを悟っていそうというか。
623(1): 2020/08/02(日)20:29 ID:Vanmrtqf(3/3) AAS
バグの無いことの証明が不可能なのは、
ゲーデルの不完全性定理とかあのへんまで突っ込んでいくからであって、
99.9%okなら良しとする現実世界なら普通に可能
624: 2020/08/03(月)23:11 ID:/fZxIKnK(1) AAS
>>623
そしてその0.1%が理由になって戦争になるわけですね
625: 2020/08/09(日)01:00 ID:JDEJdFnx(1) AAS
過疎ってると落ち着く
626: 2020/08/13(木)15:32 ID:g8OxF1lY(1/2) AAS
UTF8からShift-JISに変換し、その中で変換できなかった文字列はhtml数値文字参照に変換したいです
(UTF8)楽しいね🙂→(Shift-JIS)楽しいね🙂 ;
このような風にです
こちらのサイトを参考にして↓のように書いてみたのですが
外部リンク[html]:blog.netandfield.com
use Encode;
my $word = "楽しいね🙂";
Encode::from_to( $word, "UTF8", "Shift_JIS", Encode::FB_HTMLCREF);
print "$word";
(結果)
?y??????🙂 ;
と、元の日本語が文字化けしてしまいます
どこを直せばいいでしょうか?
Perlのバージョンは5.18.2
Encodeモジュールのバージョンは2.49です
627(1): 2020/08/13(木)16:19 ID:HLH3bdVq(1) AAS
その出力先(ターミナル?コンソール?)は、そもそもシフトJISテキストを表示できるのか?
できない場合は、プログラムは関係なく、ターミナルが文字化けする。
ためしにtext.htmlのようなファイルに出力してから、その内容を確認したら?
628(2): 2020/08/13(木)16:44 ID:DQVPr3Tq(1) AAS
前にやろうとして諦めた
pythonだと簡単
try:
str_sjis = str.encode("CP932")
except UnicodeEncodeError:
print str.encode("utf-8")
629: 2020/08/13(木)16:48 ID:/BJ4BGZD(1) AAS
>>628
そのレベルならPerlでも簡単
絵文字だけ抜き出してHTML特殊文字化 でしょ
630: 2020/08/13(木)17:00 ID:g8OxF1lY(2/2) AAS
>>627
ターミナルです
ファイルに出力してそれをShift-JISとして開いたら文字化けもなく見ることができました
内部的には問題なかったのですね
ありがとうございました
631: 2020/08/13(木)22:25 ID:L5UfXSE8(1) AAS
>>628
笑わすんじゃねーw
632: 2020/08/15(土)08:35 ID:ACgG3ouC(1/2) AAS
プロトタイプ属性の指定がどうやってもできん
use feature 'signatures';
sub foo :prototype($$) ($left, $right) {
return $left + $right;
}
これで構文エラーになる理由が全く分からん
633: 2020/08/15(土)10:52 ID:N6F3nDZU(1) AAS
釣れますか?
634: 2020/08/15(土)12:09 ID:ybTBju6n(1) AAS
同時には使えんやろ
635: 2020/08/15(土)14:02 ID:ACgG3ouC(2/2) AAS
え????
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
構文こうなってるけど?
636(2): 2020/08/15(土)15:48 ID:k2IZqmRY(1) AAS
以下のような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つの変数に代入したいのですが、方法はあるでしょうか?
637: 2020/08/15(土)16:19 ID:V1MJgzDn(1) AAS
そら一発では無理だろう
一旦配列に入れてから真ん中で分ける
638: 2020/08/15(土)16:34 ID:o+i8zw5r(1) AAS
釣りに引っ掛かるな
639: 2020/08/15(土)17:04 ID:gFfdk9Ij(1) AAS
>>636
はい。あります。
640(2): 2020/08/15(土)19:50 ID:dQrORRCv(1/2) AAS
ちょろい問題。単なる初心者で釣りなんかじゃないでしょう。
@foo = (); @bar = ();
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*$}{$2}){
push @foo, $1;
unshift @bar, $3;
}
641: 2020/08/15(土)19:55 ID:dQrORRCv(2/2) AAS
2行目間違えてた。
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*?$}{$2}){
642: 2020/08/15(土)20:01 ID:UM/CpThf(1/3) AAS
# 元ネタ
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]);
643(1): 2020/08/15(土)20:03 ID:UM/CpThf(2/3) AAS
なんだこの糞改行(´・ω・`)
# 全部の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]);
644(1): 2020/08/15(土)20:11 ID:UM/CpThf(3/3) AAS
俺のは巨大なHTMLだとメモリが死ぬ
安全策なら>>640
645: 2020/08/15(土)20:49 ID:ODJGcA2C(1) AAS
>>644
まあ、そんなに巨大だったら、どっちにしろ死ぬやろけどな。w
本気で心配するならチビチビつままないと。
646(4): 2020/08/16(日)03:38 ID:Degs0Zl8(1/4) AAS
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>"
647: 2020/08/16(日)06:28 ID:Rc5RuLFB(1/3) AAS
Mechanizeでやれる?
648: 646 2020/08/16(日)07:20 ID:Degs0Zl8(2/4) AAS
Mechanize とか、curl + Nokogiri でも、静的なページなら、DOM を取得できるけど、
Ajax など、JavaScript で、動的にDOMを組み立てている場合は、
sleep するとか、Selenium WebDriver などを使わないと、DOMを取得できない
5ch などは、空のHTMLを送ってきてから、
Ajax で、ページの内容を取得しているから、
HTMLをスクレイピングするだけでは、タイミングによっては内容が存在しない
649: 646 2020/08/16(日)07:27 ID:Degs0Zl8(3/4) AAS
Ruby で、curl, Nokogiri の例
require 'nokogiri'
html = `curl 外部リンク: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 = '外部リンク:www.example.com
doc = Nokogiri::HTML(open(url))
上下前次1-新書関写板覧索設栞歴
あと 353 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.017s