2013-05-03 1 views
0

Мне нужна помощь от вас. Питонисты: я соскабливаю все URL-адреса, начиная с «details.php?». от this page и игнорируя все остальные URL-адреса.Очистить конкретные URL-адреса от страницы и преобразовать их в абсолютные URL-адреса

Затем мне нужно преобразовать каждый URL-адрес, который я только что очистил до абсолютного URL-адреса, поэтому я могу соскрести их один за другим. Абсолютные адреса начинаются с:? http://evenementen.uitslagen.nl/2013/marathonrotterdam/details.php ...

Я попытался с помощью re.findall так:

html = scraperwiki.scrape(url) 
if html is not None: 
    endofurl = re.findall("details.php?(.*?)>", html) 

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

ответ

0

Ах! Мои любимые ... списки!

base_url = 'http://evenementen.uitslagen.nl/2013/marathonrotterdam/{0}' 
urls = [base.format(x) for x in list_of_things_you_scraped] 

Я не регулярное выражение гений, так что вам, возможно, придется возиться с base_url, пока вы не получите это точно.

0

Если вам нужны окончательные URL-адреса один за другим, и с ними нужно сделать, вы должны использовать генератор вместо итераторов.

abs_url = "url data" 
urls = (abs_url+url for url in endofurl) 

Если вы беспокоитесь о кодировании URL, вы можете использовать urllib.urlencode (URL)

3

Вы можете использовать urlparse.urljoin() для создания полной URLs:

>>> import urlparse 
>>> base_url = 'http://evenementen.uitslagen.nl/2013/marathonrotterdam/' 
>>> urlparse.urljoin(base_url, 'details.php?whatever') 
'http://evenementen.uitslagen.nl/2013/marathonrotterdam/details.php?whatever' 

Вы можете использовать список понимание этого для всех ваших URL:

full_urls = [urlparse.urljoin(base_url, url) for url in endofurl] 
0

Если вы хотите использовать lxml.html для анализа html; имеется .make_links_absolute():

import lxml.html 

html = lxml.html.make_links_absolute(html, 
    base_href="http://evenementen.uitslagen.nl/2013/marathonrotterdam/")