[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг сайта. Не получается.
denisOg
Использую библиотеки для парсинга nokogiri и phpQuery
Через file_get_contents() - попробовал запарсить хабр - все ок.
А этот сатй не получилось - пишет, что я робот..
Попробовал использовать курл - опять вернул страницу с предупреждением.
(тут уже появился спортивный интерес :D )
Попробовал сокетом

$content='';
$fp = fsockopen('my-site.com, 80);
if ($fp) {
$header = "GET / HTTP/1.0\r\n";
$header .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$header .= "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n";
$header .= "User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1)\r\n";
$header .= "Connection: Keep-Alive\r\n";
$header .= "Host: my-site.com\r\n\r\n";
fputs($fp, $header);
while (!feof($fp))
$content .= fgets($fp, 1024);
}
fclose($fp);



получилось нормальную страницу(не предупреждение). Вывел $content - вывелся сайт. Но распарсить его($content) не получаеться.
nokogiri - не может его разобрать, а phpQuery - выводит каракули заместо русских букв(сайт на w1251)

Что делать?
Смотреть в сторону кодировки? Или вообще не пробовать через сокет?

_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Игорь_Vasinsky
Цитата
$fp = fsockopen('my-site.com, 80);

косячина


Цитата
выводит каракули заместо русских букв


$content = iconv('cp1251', 'utf-8', $content);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
denisOg
Цитата (Игорь_Vasinsky @ 20.11.2012 - 10:05)
Цитата
$fp = fsockopen('my-site.com, 80);

косячина


Цитата
выводит каракули заместо русских букв


$content = iconv('cp1251', 'utf-8', $content);

$content = iconv('cp1251', 'utf-8', $content);

не помогло.

Дело в том, что если просто делаю echo - все хорошо ввводиться, а если пытаюсь распарсить с помощь

$pq = phpQuery::newDocumentHTML($html);
print_r($pq);


вывожу результат и все в

ѕРґР° тексты новости РєРёРЅРѕ шедакционные блоги шецензии РїРѕР»СŒР·РѕРІР°С‚РµР»РµР№ фотошепоштажи


1. Страница, которую парсю в charset=windows-1251
2. У меня страница в charset=utf-8
3. С помощью fsockopen - получил страницу, сделал echo - в нормальной кодировке выводиться.
4. Делаю $pq = phpQuery::newDocumentHTML($html);
print_r($pq);
- битая кодировка.
5. До парсинга делаю:

$html = iconv('cp1251', 'utf-8', $html);
или

$html = iconv("windows-1251", "utf-8",$html);

вообще проподают каракули (не заменяются на русские символы после парсинга.)

В чем еще может быть трабла? Что попробовать еще?

_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Игорь_Vasinsky
уже полученный контент $content конвертируй

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
denisOg
Цитата (Игорь_Vasinsky @ 20.11.2012 - 10:51)
уже полученный контент $content конвертируй

  $content .= iconv('windows-1251', 'utf-8',fgets($fp, 1024));

или

$content .= iconv('cp1251', 'utf-8',fgets($fp, 1024));


не помогло. результат тот же, что и при конвертировании всего(после парсинга - нет вообще русских букв)

_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Игорь_Vasinsky
пирдец.... я умываю руки.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
denisOg
Цитата (Игорь_Vasinsky @ 20.11.2012 - 11:10)
пирдец.... я умываю руки.

это вы о чем??

_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Игорь_Vasinsky
ты не понимаешь что делаешь.
я тебе дал прямой ответ.

а ты не услышал.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
denisOg
Цитата (Игорь_Vasinsky @ 20.11.2012 - 11:45)
ты не понимаешь что делаешь.
я тебе дал прямой ответ.

а ты не услышал.

хм.. делал как Вы сказали.
ок, приведу полняй текст программы:
это то что парсю:
http://attractdev.tk/projects/denis-test/test3.php
header('Content-Type: text/html; charset=utf-8');
include('phpQuery.php');
$html = get_page();
//оставляю только текст html страницы
$html = substr($html,strpos($html,'<!DOCTYPE'));
$pq = phpQuery::newDocumentHTML($html);
print_r($pq);

function get_page()
{
$content='';
$fp = fsockopen('www.attractdev.tk', 80);
if ($fp) {
$header = "GET /projects/denis-test/test3.php HTTP/1.0\r\n";
$header .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$header .= "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n";
$header .= "User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1)\r\n";
$header .= "Connection: Keep-Alive\r\n";
$header .= "Host: www.attractdev.tk\r\n\r\n";
fputs($fp, $header);
while (!feof($fp))
$content .= fgets($fp, 1024);
} fclose($fp);

$content = iconv('cp1251', 'utf-8', $content);

return $content;

}

вот. если дулаю до
$pq = phpQuery::newDocumentHTML($html);

все гуд с кодировкой, после
тшаницыНазвание Р&#339;РѕРё Рё


_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.