или вот так я парсил e-mail, который генерился javascript'ом (в целях защиты от парсинга):
contact_email = safe_list_get(selector.select(".//table[@width='90']//script/text()").re('document.write\((.*)\)'), 0)
if contact_email:
contact_email = re.match("<a.*>(.*)</a>", common.eval_js(contact_email.encode("utf-8"), common.js_context)).group(1)
if contact_email and common.re_patterns["email"].match(contact_email):
contact["Email"] = contact_email
Да, код не самый красивый (как и сайт, который парсился), но идея, думаю, ясна — для поиска элемента в DOM используем селекторы (XPath или CSS-подобные); для более детального разбора (или когда селекторы слишком жёстко завязываются на структуру сайта) — используем регулярки и всё остальное, что только в голову взбредёт.
Я не хочу писать на С++, я хочу писать на C#, где строгой ОО-подход, сборка мусора, своя BCL, а потом бороться с этим ООП, глупым сборщиком мусора и неоптимальными для высокопроизводительных приложений стандартными инструментами.
Но за статью все же плюс — есть много интересного.
или вот так я парсил e-mail, который генерился javascript'ом (в целях защиты от парсинга):
Да, код не самый красивый (как и сайт, который парсился), но идея, думаю, ясна — для поиска элемента в DOM используем селекторы (XPath или CSS-подобные); для более детального разбора (или когда селекторы слишком жёстко завязываются на структуру сайта) — используем регулярки и всё остальное, что только в голову взбредёт.
Но за статью все же плюс — есть много интересного.