Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401

Curl не до конца парсит

14.08.2013, 21:25. Показов 2716. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите пожалуйста, есть вот такой код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$result1 = mysql_query ("SELECT * FROM sport",$db);
$myrow1 = mysql_fetch_array ($result1);
do
 {
echo "<div id='stat' style='display:block;'>";
          
$urlik=$myrow1['url'];//тут подгружается ссылка с базы
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$urlik); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30); 
curl_setopt($ch, CURLOPT_TIMEOUT,30);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17'); 
curl_setopt($ch, CURLOPT_REFERER,'http://www.site2.ru/predictor/');
$result = curl_exec($ch);
curl_close($ch);
$content = $result;
 
$tag_in="<table class=\"match-tilte\">";
$tag_out="</table>";
 
$position=strpos($content,$tag_in);
$content=substr($content,$position);
$position=strpos($content,$tag_out);
$content=substr($content,0,$position);
 
//тут идут манипуляции с ссылками
$content=str_replace("href=\"/football/teams/"," ",$content);
$content=preg_replace('@href="(.*?)"@smi','href="http://mysite.ru/sport"',$content);
$content=str_replace('Смотреть:','<a target="_blank" href="http://mysite.ru/sport">Смотреть:</a>',$content);
$content=str_replace('img','img width="70" height="70"',$content);
 
 
echo $content;
echo "</table>";
echo "</div>";
}
 while ($myrow1 = mysql_fetch_array ($result1))
здесь curl берет ссылку с базы mysql и потом парсит с нее контент, и все это происходит в цыкле, то есть перебирает все ссылки которые я добавил в базу. Но у меня возникла такая проблема, когда я додаю новую ссылку в базу, то оно мне не сразу с нее парсит, а только после 1 - 2 минут начинает парсить, или еще бывает что при запуске скрипта оно может не со всех ссылок парсить, а некоторые пропускает и только когда пару раз перезагрузить страницу, только тогда может спарсить со всех ссылок. Я не могу понять почему это происходит, помогите разобраться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2013, 21:25
Ответы с готовыми решениями:

Curl не парсит ASCII
Добрый день, подскажите, пожалуйста, почему curl (да и simple_dom тоже) не хочет парсить код HTML страницы с кодировкой ASCII ? С...

Почему CURL не парсит ASCII ?
Добрый день, подскажите, пожалуйста, почему curl не хочет парсить код HTML страницы с кодировкой ASCII ?

Не парсит до конца
private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } ...

10
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
14.08.2013, 21:51
curl вообще никому никогда не парсит, но посмотрите эти параметры:
Цитата Сообщение от gigs Посмотреть сообщение
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
сайт который вы пытаетесь парсить может быть "тяжелый" и не укладывается в ваш таймаут
1
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401
14.08.2013, 21:53  [ТС]
а если поставить больше таймаут ? хотя это не выход.
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
14.08.2013, 21:58
Цитата Сообщение от gigs Посмотреть сообщение
а если поставить больше таймаут ?
тут посмотреть доки по curl-у нужно... самое первое решение это увеличить таймаут. Возможно еще есть проблемы в том что сервер недополучает какие-то заголовки в запросах
0
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401
17.08.2013, 17:11  [ТС]
выставил больше таймаут, но все равно та же проблема, когда перезагружаю страницу оно то парсить со всех ссылок, то только с некоторых.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.08.2013, 18:30
ну а вы как думаете? это же сеть, тут могут быть сетевые ошибки. некоторые сайты иногда оказываются недоступными, некоторые могут вас вообще скинуть, из-за кривого реферера или каких-то других заголовков (не все любят, когда их парсят боты).
Следите за ошибками -- необходимо переотправлять неудачные запросы, например. или показывать/логировать, на каких конкретно ссылках провалилось, и вручную делать такие же запросы и выяснять почему так.
пс. используйте curl_multi-функции. в вашем случае оно будет отрабатывать в сотни раз быстрее (наврядли вы или ваш сервер на диалапе сидите).
0
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401
17.08.2013, 18:48  [ТС]
в поддержке хостинга мне написали что у меня много отказов по файловым дескрипторам, и из за этого может не работать мой скрипт, хотя я смотрел статистику и за последние три дня у меня не было отказов вообще.
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.08.2013, 18:52
это лишь доказывает что проблема в сетевых ошибках
Цитата Сообщение от gigs Посмотреть сообщение
отказов по файловым дескрипторам
в пхп любые сетевые соединения также являются файловыми дескрипторами.
Цитата Сообщение от gigs Посмотреть сообщение
я смотрел статистику
вероятно, там где вы смотрели, этот момент не учивается, и подсчитываются только локально открытые файлы
0
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401
17.08.2013, 18:58  [ТС]
а сетевые ошибки это может быть что при подключении к 10 страницам сразу, некоторые страницы скрипт не успевает загрузить и поэтому ничего не выводит ?
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.08.2013, 19:02
если вы говорите скрипту чтобы он что-то вывел, то он обязан выводить.
включите отображение ошибок перед скриптом:
PHP
1
2
error_reporting(E_ALL);
ini_set('display_errors', 1);
0
8 / 9 / 1
Регистрация: 21.12.2011
Сообщений: 401
17.08.2013, 19:19  [ТС]
что то мне не выводит никаких ошибок даже когда скрипт не работает.

Добавлено через 5 минут
пробовал только что через file_get_contents, и получил тот же результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2013, 19:19
Помогаю со студенческими работами здесь

BeautifulSoup не парсит страницу до конца
Писал парсер до какого-то времени он работал нормально, а потом видимо в страницу разработчики внесли изменения и код стал невалидным или...

Парсит нужный текст не до конца
Помогите, парсит только 1 строку, а нужно что бы все function Pars(T_, ForS, _T: string): string; var a, b:integer; begin Result...

cURL в цикле. Не до конца выполняется цикл
почему данный код выводит страницу только 22 раза из 76?&lt;?php $start = microtime(true); ini_set(&quot;max_execution_time&quot;,...

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос, который будет авторизировать пользователя на...

Curl команду превратить в php curl
команда: curl -s -F widget=$WIDGET -F secret=$SECRET -F amouser=$AMOUSER -F amohash=$AMOHASH -F domain=amocrm.ru -F widget=@$file...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru