Se trata de
a- Montar un menu de arranque ( mainlist(item): )
En el se ponen "a mano" los enlaces ( thumbnail con la url a la foto, url con la url que pasamos a la siguiente funcion, action = "" << aqui se define a que funcion se llama al pinchar en dicho "item" ( o linea de menu )
b - Lo que hacemos es llamar a la url de busqueda de youtube (
https://www.youtube.com/results?q=....... )
Leemos el codigo fuente de la pagina de respuesta a dicha url
c- Buscamos por el codigo fuente los diferentes elementos que construyen el siguiente menu ( listav(item): ) con expresiones regulares de python
Para ellos vamos "acotando" lo que queremos sacar.
basicamente -> url , thumbnail ( imagen ) , titulo
Para las expresiones regulares, se trata de sacar del codigo html de la pagina de resultados que contiene esas variables que necesitamos....
Por ejemplo, estariamos buscando aquellas lineas que sigan el patron :
patronbloque='<li><div class="yt-lockup.*?<img src="[^"]+" alt="" data-thumb="([^"]+)".*?<h3 class="yt-lockup-title "><a href="([^"]+)".*?title="([^"]+)".*?</h3>'
donde pone .*? significa que NOS da igual lo que haya en medio
donde pone "[^"]+" significa "todo lo que venga entre dos comillas
Cuando queremos "sacar el valor de algo", y quedarnos con eso ( las variables que queremos ) , ponemos lo mismo de arriba pero con parentesis
donde pone <a>
(.*?)<b> significa, quedate con lo que hay entre <a>
algo<b>
donde pone href="
([^"]+)" significa quedate con lo que hay entre las dos comillas ( href="
http://www.algo.com"
en el bucle
for scrapedurl, scrapedthumbnail, scrapedtitle in mathces:
estaria cogiendo el valor de esas variables ( con ese orden, es decir, con el orden del patron de busqueda )
La verdad es que no es nada complicado, si tedioso.