Задать вопрос

Как парсить html страницы и его обрабатывать?

Есть страница в вк vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum... необходимо спарсит html и найти спарсить ссылку cs624016.vk.me/v624016533/a226/owG51bJm59o.jpg .Подскажите код на с++ или питоне ,если не трудно
  • Вопрос задан
  • 13291 просмотр
Подписаться 7 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
mututunus
@mututunus
Backend developer (Python, Golang)
$ pip install lxml

import urllib2
from lxml import html

data = urllib2.urlopen(url).read()
h = html.fromstring(data)
h.cssselect('.mv_actions a')[0].attrib['href']
Ответ написан
Комментировать
@throughtheether
human after all
Держите отвратительный, кривой, но работающий код на python:
from selenium import webdriver
import time
browser = webdriver.Firefox()
url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
browser.get(url)
time.sleep(5) # this is bad
img=browser.find_element_by_xpath('//a[@id="pv_photo"]/img')
print img.get_attribute('src')
browser.quit()

вывод:
http://cs624016.vk.me/v624016533/a226/owG51bJm59o.jpg

Как этот код можно изменить:
1) строку time.sleep(5) заменить на проверку нахождения элемента (ждем секунду, проверяем наличие элемента, если его нет, увеличиваем счетчик и продолжаем; при достижении счетчиком максимального значения - таймаут)
2) заменить selenium на phantom.js (чтобы окно фаерфокса не появлялось)
3) понять, что происходит при загрузке страницы браузером и имитировать это поведение при помощи requests.
Третий путь, на мой взгляд, самый трудозатратный и самый многообещающий (в смысле скорости решения).

UPD:
решение при помощи requests:
import requests
from lxml.html import fromstring
url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
search_string=url[url.find('photo-')+len('photo-'):url.find('%2F')]
r=requests.get(url)
doc=fromstring(r.text)
xpath='//a[contains(@onclick, "%s")]/img' % search_string
print doc.xpath(xpath)[0].attrib['src']
Ответ написан
Trrrrr
@Trrrrr
Проще всего использовать QTWebKit: https://qt-project.org/doc/qt-5/qwebframe.html#fin...
Ответ написан
Комментировать
@lPolar
data scientist
Самый легкий в этом плане для освоения именно для новичка - grab (https://pypi.python.org/pypi/grab/0.4.13 )
Берешь firefox+firebug, смотришь исходный код страницы и ищещь нужный кусок. В firebug вытаскиваешь его xpath, потом можно сделать вот так (python 3):
from grab import Grab
g = Grab()
sample_url = 'some_url'
xpath_part= 'some_xpath'
resp =  g.go(sample_url).body
result = resp.xpath(some_xpath).text()
print(result)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы