2

PHPを使用して、このサイトからいくつかのランダムな段落を取得しようとしています: http ://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx

[送信]ボタンを開始し(テキストフィールドに入力する必要はありません)、結果のランダムなテキストのみを解析するための最短のコードセットは何ですか?

送信ピースを機能させることができないようです。

4

2 に答える 2

1

単純にページを POST してみてください。Or GET this url http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?_ VIEWSTATE=%2FwEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw%3D%3D& _EVENTVALIDATION=%2FwEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu%2FJnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main% 24btnNew=新規+段落

コンテンツを取得するだけで済みspan.randomSentenceます。 これはそれを行うのに役立ちます。


私がテストした編集コード:

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE=/wEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw==&__EVENTVALIDATION=/wEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu/JnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main%24btnNew=New%20Paragraph';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

$p = strpos($c, '<span id="tmpl_main_lblPara" class="randomSentence">');
if ($p !== false) {
    $s = substr($c, $p);
    $pcs = explode('</span>', $s);
    echo $pcs[0];
}
于 2012-10-31T14:41:44.427 に答える
1

より柔軟な方法 - viewstate と eventvalidation を動的にフェッチします。

<?php
$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

//__VIEWSTATE
$viewstate = '';

//__EVENTVALIDATION
$eventvalidation = '';

// Fetch VIEWSTATE
$p1 = '<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="';
$p = strpos($c, $p1);
if ($p !== false) {
    $s = substr($c, $p+strlen($p1));
    $pcs = explode('"', $s);
    if (!empty($pcs[0])) {
        $viewstate = $pcs[0];
    }
}

// Fetch EVENTVALIDATION
$p1 = '<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="';
$p = strpos($c, $p1);
if ($p !== false) {
    $s = substr($c, $p+strlen($p1));
    $pcs = explode('"', $s);
    if (!empty($pcs[0])) {
        $eventvalidation = $pcs[0];
    }
}

// PUT YOUR OBJECT & SUBJECT HERE
$postvalues = array(
    'tmpl$main$txtSubject' => '',
    'tmpl$main$txtObject' => '',
    'tmpl$main$btnNew' => 'New Paragraph',
);

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE='.urlencode($viewstate).'&__EVENTVALIDATION='.urlencode($eventvalidation).'&tmpl%24main%24txtSubject='.urlencode($postalues['tmpl$main$txtSubject']).'&tmpl%24main%24txtObject='.urlencode($postalues['tmpl$main$txtObject']).'&tmpl%24main%24btnNew=New%20Paragraph';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 


$t = '<span id="tmpl_main_lblPara" class="randomSentence">';
$p = strpos($c, $t);
if ($p !== false) {
    $s = substr($c, $p + strlen($t));
    $pcs = explode('</span>', $s);


   echo $pcs[0]; 
}
于 2012-10-31T16:08:21.543 に答える