2014-05-19 8 views
0

J'essaie d'extraire le src iframe étant donné un ensemble de sites utilisant Python. Par exemple, ma contribution serait A.com, B.com, C.com et si chacun de ces sites ont des iframes qui pointent vers D.com, E.com, F.com, ('None' si le site ne le fait pas ont un iframe) alors je voudrais que la sortie soit quelque chose de la forme:Extraire les liens HTML en utilisant Python

Site Iframe Src 
A.com D.com 
B.com E.com 
C.com F.com 

Actuellement, j'ai quelque chose comme ceci:

from collections import defaultdict 
import urllib2 
import re 

def PrintLinks(website): 
counter = 0 
regexp_link= regexp_link = r'''<frame src =((http|ftp)s?://.*?)''' 
pattern = re.compile(regexp_link) 
links = [None]*len(website) 
for x in website: 
    html_page = urllib2.urlopen(website[counter]) 
    html = html_page.read() 
    links[counter] = re.findall(pattern,html) 
    counter += 1 
return links 

def main(): 
website=["A.com","B.com","C.com"] 

Est-ce la meilleure façon de le faire et comment voulez- Je reçois la sortie pour être le format que je voudrais? Merci!

Répondre

0

Vous n'avez pas besoin de réinventer la roue en utilisant regex, il existe des paquets python géniaux qui le font pour vous, étant probablement le plus célèbre de BeautifulSoup.

Installer BeautifulSoup et httplib2 avec pépin, et essayer


import httplib2 
from BeautifulSoup import BeautifulSoup, SoupStrainer 

sites=['http://www.site1.com', 'http://www.site2.com', 'http://www.site3.com'] 
http = httplib2.Http() 

for site in sites: 
    status, response = http.request(site) 
    for iframe in BeautifulSoup(response, parseOnlyThese=SoupStrainer('iframe')): 
     print site + ' ' + iframe['src'] 
Questions connexes