|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.05.2016, 16:50 | #1 |
Регистрация: 08.05.2016
Сообщений: 6
|
Как указать кодировку для парсинга?
Пишу для себя скрипт для анализа контента некоторых сайтов.
Вот кусочек скрипта: PHP код:
Перепробовал много чего, но вопросики так и не смог превратить в нормальный текст. Докопался до того, что в header`e сайтов (в заголовках которые отдает сервер нет указания кодировки), с которых вместо текста парсятся вопросы нет указания кодировки. Как я понимаю, curlу надо указать кодировку. А у этих проблемных сайтов кодировка указана в html коде - в метатегах. Но это для curlа уже бесполезно - он спарсил текст в виде вопросов. Подскажите как решить проблемку. Я программист-любитель. Прошу не пинать сильно. |
28.05.2016, 17:17 | #2 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
вы можете явно указать кодировку для данного сайта?
для примера - парсить отдельно сайты с одной кодировкой. потом по базе с другой кодировкой и т.д. при желании в несколько потоков одновременно по разным базам. |
28.05.2016, 17:40 | #3 | |
Регистрация: 08.05.2016
Сообщений: 6
|
Цитата:
Сначала я получаю 10 урлов. И я не знаю какая кодировка у этих сайтов. И только в процессе парсинга оказывается, что некоторые сайты парсятся в виде вопросов. В том-то и вопрос, что я могу проверить заголовок сервера - увидеть что там не указана кодировка. Тогда я могу проверить мета-теги и взять оттуда кодировку. Но тогда надо повторно спарсить этот сайт. Это тоже не проблема. Я указывал принудительно при парсинге ту кодировку которая у этих "странных" сайтов, но вопросики остались. |
|
28.05.2016, 17:46 | #4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
ATF, попробуйте открыть этот сайт в обычном нотепад ++ и конвертнуть в UTF-8 и после этого скормить курлу
Код:
заоодно получите лог сайтов отлающих вопросы. Вполне возможно что и курл как-то обрабатывает, например, обновление PHP сервера до последней версии как вариант вообще в парсинге материалы для работы я всегда выкачиваю сначала, потом преобразую и только потом работаю. сайт может быть не доступен и будет ошибка для примера. и так как работа не требует скорости, но требует ведения лога работы - все выкачивается. |
28.05.2016, 19:26 | #5 |
Регистрация: 08.05.2016
Сообщений: 6
|
|
28.05.2016, 20:01 | #6 |
Регистрация: 08.05.2016
Сообщений: 6
|
Для себя вопрос решил так:
Забираю контент в чистом виде по урлу примерно так: $page = @file_get_contents($request); Затем здесь берем библиотеку: http://popoff.donetsk.ua/text/work/libs/a/charset/ и используем function charset_x_win() чтоб преобразовать любую строку на русском языке из неизвестной кодировки в кодировку windows-1251. Т.к. я работаю с utf-8 я затем зная что весь контент со всех сайтов уже в кодировке ср1251, конвертирую в utf-8: if($codir != 'UTF-8'){ $content = iconv("cp1251","utf-8",$content); } Теперь весь контент единообразно и корректно отображается, и весь в utf-8. |
28.05.2016, 20:40 | #7 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
ATF, ну и замечатльно! я даже не успел ответить что там обычный get
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указать кодировку файла. Возможно? | Maks512 | Visual C++ | 3 | 11.02.2014 19:47 |
Как указать путь для отправки файла на мыло | Chicker | Общие вопросы Delphi | 10 | 26.09.2012 08:14 |
Как указать для Query - Connection с другой формы??? | tim21701 | БД в Delphi | 4 | 22.01.2012 02:22 |
Как из мемо считать i-ую строку для парсинга. | TwiX | Общие вопросы C/C++ | 0 | 17.12.2009 21:49 |
Как указать область на листе для макроса | ru3000 | Microsoft Office Excel | 2 | 07.08.2009 23:05 |