Pull to refresh

Comments 19

У меня были подобные задания… Парсить сайт на asp, где пагинация сделана таким образом, что чтобы выбрать например 300-ую страницу, надо 300 раз щёлкать кнопку «Следующая страница» (на самом деле поменьше, но суть это отражает). Другим способом это никак сделать было нельзя.
пагинация


Какая в пиццду вагинация? Чем плох термин «постраничный вывод»?
Оказалось, что preg_match некорректно работает с очень большими скрытыми полями.

По приведенной вами же ссылке ясно сказано о количестве символов. Скрытые поля тут непричем, функция тупо работает с ХХХ символами текста.

Хорошо хоть не пришлось учить еще и css

Вообще-то я верстальщик

Верстальщик не знающий CSS?!

В целом статья неочем. Поток создания с кусами внеконтекстного кода.
По приведенной вами же ссылке ясно сказано о количестве символов. Скрытые поля тут непричем, функция тупо работает с ХХХ символами текста.

Косяк. Исправлю. Спасибо.

Верстальщик не знающий CSS?!

Кхм… <irony>?

В целом статья неочем. Поток создания с кусами внеконтекстного кода.

Для меня все это собрать в цельный процесс и все-таки распарсить результат было маленьким открытием, сопровожденным копанием в англоязычных источниках, пробами, ошибками и прочими забавными приключениями.
Ирония? Ничуть. Поскольку топик на техническом ресурсе опубликован, оговорок о других отраслях нет (например, верстальщик типографии), то контекст задает, что это верстальщик переводящий PSD в статичный html+css. А верстальщик не знающий css — плохой верстальщик.

Касательно открытый… Это публичный ресурс коллективных блогов. Поэтому топик должен быть интересен хотя еще кому-то кроме автора и его родных. А котиков постить это все же в личный блог, вконтактик там.
Убрала от греха момент об изучении css, раз уж он неоднозначен.

А неинтересен — искренне верю, что в ближайшие пару лет найду достаточно материала, чтобы собрать статью, интересную для Хабра.
Таки в каком контексте верстальщик? Веб? Полиграфия/книжное дело?
Хм… а сейчас принято, что верстальщик не знает css? Просто для меня заявление от верстальщика "Хорошо хоть не пришлось учить еще и css" звучит как заявление пилота самолета "хорошо хоть не пришлось учиться еще и пилотировать".

Возможно в отрасли какие-то изменения, а я не в курсе. У вас какие должностные обязанности? Что должен уметь и делать веб верстальщик?
Это была моя — личная, собственная, внутренняя — ирония над ситуацией.

Над тем, что пришлось вечерами учить незнакомые сферы php и javascript. И технический английский тоже учить. А когда дело дошло до родной и милой верстки, это был радостный выдох: «Как хорошо, что я
то знаю! Как хорошо, что не надо учить, а можно просто сесть и сделать!»
В следующей статье стоит иронизировать более явно для стороннего читателя. В данном случае получилось крайне неудачно.
«В следующей статье» в вашем комментарии уже радует.
Спасибо.
Постараюсь.
Вы бы полный листинг выложили кода, может пригодится кому, а так получилась история из серии «как я пошагово изучал html и создал свою первую хомпагу», при этом не показывая конечный результат, а просто показывая вырваные куски кода. Могли бы тогда просто обойтись ссылками на готовые библиотеки. Приходиться в некоторых моментах интуитивно догадываться что и как. Рад вашему опыту и результату, но для статьи, на мой взгляд, маловато.
Полный листинг, мне кажется, занятие бессмысленное — в статья и так примерно половина всего кода. Если интересует что-то еще — добавлю. только скажите. какой логический кусок интересует.
Очень прошу прощения за возможно очевидный вопрос, но подскажите, пожалуйста, что это за функция такая curlFunction()?
Вот эта штука. Честно найденная где-то в интернетах.

function curlFunction($url, $postdata=false) {
	$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";

	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	// возвращает веб-страницу
	curl_setopt($ch, CURLOPT_HEADER, 0);			// не возвращает заголовки
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);	// переходит по редиректам
	curl_setopt($ch, CURLOPT_ENCODING, "");			// обрабатывает все кодировки
	curl_setopt($ch, CURLOPT_USERAGENT, $uagent);	// useragent
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 	// таймаут соединения
	curl_setopt($ch, CURLOPT_TIMEOUT, 120);			// таймаут ответа
	curl_setopt($ch, CURLOPT_MAXREDIRS, 10);		// останавливаться после 10-ого редиректа
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
	curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie/route_cookie.txt");
	curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie/route_cookie.txt");
	
	$content = curl_exec( $ch );

	curl_close( $ch );
	
	return $content;
}
а как быть если viewstate не проходит валидацию по MAC? Не сталкивались?
> Validation of viewstate MAC failed
Нет, к сожалению, с таким не сталкивалась.
Когда я писал биллинг на прошлом месте работы, нужно было писать тонны пауков для работы с билайном, мегафоном и мтсом (у которых для партнёров юрлиц нет нормального апи, ха ха три раза), у которых все личные кабинеты на java (она тоже очень любит viewstate и при этом «ломаться» когда, например, есть на странице подгрузка аяксом 2-3 элементов, а вам нужен 4ый, для которого у вас уже есть необходимые параметры, но вы не можете отправить запрос сразу за 4, а вынуждены делать 2 и 3, иначе бекэнд ругается). Вот тогда то я и понял насколько мощный инструмент scrapy. И какие страшные парсеры получаются на связке curl-php.
Так что я вам рекомендую scrapy, python и lxml с xpath, хотя последнее, наверное, на любителя, но на мой вкус это весьма лаконичный способ разбора html.
Sign up to leave a comment.

Articles