2015-03-14 2 views
1

Я хочу скопировать данные с this page. Вот мой текущий код:python scrapy extract данные с сайта

buf = cStringIO.StringIO() 
c = pycurl.Curl() 
c.setopt(c.URL, "http://www.guardalo.org/99407/") 
c.setopt(c.VERBOSE, 0) 
c.setopt(c.WRITEFUNCTION, buf.write) 
c.setopt(c.CONNECTTIMEOUT, 15) 
c.setopt(c.TIMEOUT, 15) 
c.setopt(c.SSL_VERIFYPEER, 0) 
c.setopt(c.SSL_VERIFYHOST, 0) 
c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0') 
c.perform() 
body = buf.getvalue() 
c.close() 

response = HtmlResponse(url='http://www.guardalo.org/99407/', body=body) 
print Selector(response=response).xpath('//edindex/text()').extract() 

Это работает, но мне нужна ссылка, ссылка на видео и описание как отдельные переменные. Как я могу это достичь?

ответ

1

Название могут быть извлечены с помощью //title/text(), видео ссылка на источник с помощью //video/source/@src:

selector = Selector(response=response) 

title = selector.xpath('//title/text()').extract()[0] 
description = selector.xpath('//edindex/text()').extract() 
video_sources = selector.xpath('//video/source/@src').extract()[0] 

code_url = selector.xpath('//meta[@name="EdImage"]/@content').extract()[0] 
code = re.search(r'(\w+)-play-small.jpg$', code_url).group(1) 

print title 
print description 
print video_sources 
print code 

Печать:

Best Babies Laughing Video Compilation 2012 [HD] - Guardalo 
[u'Best Babies Laughing Video Compilation 2012 [HD]', u"Ciao a tutti amici di guardalo,quello che propongo oggi \xe8 un video sui neonati buffi con risate travolgenti, facce molto buffe,iniziamo con una coppia di gemellini che se la ridono fra loro,per passare subito con una biondina che si squaqqera dalle risate al suono dello strappo della carta ed \xe8 solo l'inizio.", u'\r\nBuone risate a tutti', u'Elia ride', u'Funny Triplet Babies Laughing Compilation 2014 [NEW HD]', u'Real Talent Little girl Singing Listen by Beyonce .', u'Bimbo Napoletano alle Prese con il Distributore di Benzina', u'Telecamera nascosta al figlio guardate che fa,video bambini divertenti,video bambini divertentissimi'] 
http://static.guardalo.org/video_image/pre-roll-guardalo.mp4 
L49VXZwfup8 
+0

для видео требуется захватить этот код: L49VXZwfup8, это код видео с youtube! – pythoncoder

+0

@pythoncoder в порядке, обновил ответ, это то, о чем вы спрашивали? Благодарю. – alecxe

+0

@pythoncoder также отмечает, что у Alex Martelli есть действительная точка здесь - если вы используете Scrapy для извлечения данных из этого единственного URL-адреса, то это огромные накладные расходы. Я предполагаю, что вы собираетесь расширить решение для нескольких URL-адресов такого типа. – alecxe

1

Нет необходимости scrapy для одинарной URL выборки - просто получить, что одна страница-х HTML с более простым инструментом (даже простейшим urllib.urlopen(theurl).read()!), Затем проанализируйте HTML, например, с помощью BeautifulSoup. От простого «источника зрения», похоже, что вы ищете:

<title>Best Babies Laughing Video Compilation 2012 [HD] - Guardalo</title> 

(название), один из трех:

<source src="http://static.guardalo.org/video_image/pre-roll-guardalo.mp4" type='video/mp4'> 
<source src="http://static.guardalo.org/video_image/pre-roll-guardalo.webm" type='video/webm'> 
<source src="http://static.guardalo.org/video_image/pre-roll-guardalo.ogv" type='video/ogg'> 

(видео ссылки, множественного числа, и я могу «т выбрать один, потому что вы не говорите нам, какой формат [s] вы предпочитаете -!), и

<meta name="description" content="Ciao a tutti amici di guardalo,quello che propongo oggi è un video sui neonati buffi con risate" /> 

(описание). BeautifulSoup делает это довольно тривиально, чтобы получить каждые из них, например, после необходимого импорта

html = urllib.urlopen('http://www.guardalo.org/99407/').read() 
soup = BeautifulSoup(html) 
title = soup.find('title').text 

и т.д. и т.п. (но вы должны выбрать одну ссылки на видео - и я вижу в их источниках они упоминаются как «предварительно -rolls ", поэтому может быть, что ссылки на фактические видеоролики без рекламы фактически являются , а не на странице, но доступны только после входа в систему или что-то еще).

+0

нужен захват этого кода для видео: L49VXZwfup8 , потому что это код для видео youtube – pythoncoder