2013-08-11 2 views
1

Ниже часть веб-сайта, что я пытаюсь извлечь видеозаголовки из:Extract в красивый суп

</div> 
<div class="yt-lockup-content"> 
     <h3 class="yt-lockup-title"> 
<a class="yt-uix-sessionlink yt-uix-tile-link yt-uix-contextlink 
     yt-ui-ellipsis yt-ui-ellipsis-2" 
    dir="ltr" 
     title="Harder Polynomials" 
    data-sessionlink="ei=fYsHUvSLA8uzigLq74CABQ&amp;ved=CB8Qvxs&amp;feature=c4-videos-u" 
    href="/watch?v=LHvQeBRLFn8" 
    > 
    Harder Polynomials 
</a> 

Я хочу, чтобы извлечь название видео (Harder Многочлены) из этого. Я пробовал следующий код:

import requests 
from bs4 import BeutifulSoup 

resp=requests.get('http://www.youtube.com/user/sachinabey/videos') 

a=soup.findAll('a', attrs={'class': 'yt-uix-sessionlink yt-uix-tile-link yt-uix- contextlink yt-ui-ellipsis yt-ui-ellipsis-2'}) 

a пусто, что я делаю неправильно. Отсюда как извлечь титул

+0

Вы получаете действительное значение "а", если вы пытаетесь 'а = soup.findAll ('а', AttrS = { 'класс': 'уг-UIX-sessionlink'})' ?? – DevlshOne

ответ

0

Вот рабочий раствор, который печатает все названия видео со страницы:

import requests 
from bs4 import BeautifulSoup 

resp = requests.get('http://www.youtube.com/user/sachinabey/videos') 

soup = BeautifulSoup(resp.text) 
for title in soup.findAll('h3', attrs={'class': 'yt-lockup-title'}): 
    print title.find('a').text.strip() 

Он печатает:

Harder Polynomials 
Summing tan inverse 
iGraph tutorial 
Integrate e^(-x^2) 
Chord of Contact to Ellipse 
Equation of Tangents of an Ellipse or Hyperbola 
Motion and Air Resistance 
Projectile Motion 
Regression in R 
EM Algorithm Derivation 
Cosine Rule proof 
R writing functions 
Proof of square root 2 being irrational 
R for loops and while loops 
Chi Squared Hypothesis Testing 
Integration of Trignometric Functions 
Sequences and Series Examples 
ARCH GARCH Model Motivation 
Integration by Parts 
Differentiate Inverse Trigonometry 
Simple Harmonic Motion Examples Part II 
Simple Harmonic Motion Examples Part I 
Simple Harmonic Motion - Introduction 
HSC Solutions 2009 3 Unit Q4 
HSC 3 Unit Solutions 2009 Q2 
HSC 3 Unit Maths 2009 Solutions 
Parallel For Loops 
Change of Base for Logarithms - Examples 
Divisibility by 3 or 9 
Multiplying by 11 
0

Я думаю, что ошибка заключается в yt-uix- contextlink. Я думаю, что это должно быть опечатка. Если он исправляет, он работает.

Демо:

>>> s 
'<div class="yt-lockup-content">\n  <h3 class="yt-lockup-title">\n<a class="yt-uix-sessionlink yt-uix-tile-link yt-uix-contextlink \n  yt-ui-ellipsis yt-ui-ellipsis-2"\n dir="ltr"\n  title="Harder Polynomials"\n data-sessionlink="ei=fYsHUvSLA8uzigLq74CABQ&amp;ved=CB8Qvxs&amp;feature=c4-videos-u"\n href="/watch?v=LHvQeBRLFn8"\n >\n Harder Polynomials\n</a>' 
>>> soup=BeautifulSoup(s) 
>>> soup.findAll('a', attrs={'class': 'yt-uix-sessionlink yt-uix-tile-link yt-uix-contextlink yt-ui-ellipsis yt-ui-ellipsis-2'}) 
[<a class="yt-uix-sessionlink yt-uix-tile-link yt-uix-contextlink yt-ui-ellipsis yt-ui-ellipsis-2" data-sessionlink="ei=fYsHUvSLA8uzigLq74CABQ&amp;ved=CB8Qvxs&amp;feature=c4-videos-u" dir="ltr" href="/watch?v=LHvQeBRLFn8" title="Harder Polynomials"> 
    Harder Polynomials 
</a>] 

Или, может быть, вы можете перейти в список классов.

>>> soup.findAll('a', attrs={'class': ['yt-uix-sessionlink', 'yt-uix-tile-link', 'yt-uix-contextlink', 'yt-ui-ellipsis yt-ui-ellipsis-2']}) 
[<a class="yt-uix-sessionlink yt-uix-tile-link yt-uix-contextlink yt-ui-ellipsis yt-ui-ellipsis-2" data-sessionlink="ei=fYsHUvSLA8uzigLq74CABQ&amp;ved=CB8Qvxs&amp;feature=c4-videos-u" dir="ltr" href="/watch?v=LHvQeBRLFn8" title="Harder Polynomials"> 
    Harder Polynomials 
</a>] 
Смежные вопросы