2013-07-31 14 views
7

Więc szukałem w pewnym kodzie źródłowym i doszedłemKorzystanie Piękne Soup, aby uzyskać pełny adres URL w kodzie źródłowym

<img src="/gallery/2012-winners-finalists/HM_Watching%20birds2_Shane%20Conklin_MA_2012.jpg" 

teraz przez ten kawałek kodu w kodzie źródłowym link jest niebieski, a po kliknięciu to prowadzi do pełnego adresu URL, w którym znajduje się to zdjęcie, wiem, jak uzyskać to, co jest pokazane w kodzie źródłowym w Pythonie za pomocą Beautiful Soup I zastanawiałem się jednak, jak uzyskać pełny adres URL otrzymasz po kliknięciu łącza w kod źródłowy?

EDYTOWANIE: jeśli otrzymałem <a href = "/folder/big/a.jpg" jak ustalić początkową część tego adresu URL za pomocą pythona lub pięknej zupy?

+7

Czy umieścisz html? – Sudipta

Odpowiedz

14
<a href="/folder/big/a.jpg"> 

To jest absolutny adres dla bieżącego hosta. Więc jeśli plik HTML jest http://example.com/foo/bar.html, a następnie stosując url /folder/big/a.jpg spowoduje to:

http://example.com/folder/big/a.jpg 

Tj weź nazwę hosta i zastosuj do niej nową ścieżkę.

Python posiada wbudowaną funkcję urljoin do wykonania tej operacji dla Ciebie:

>>> from urllib.parse import urljoin 
>>> base = 'http://example.com/foo/bar.html' 
>>> href = '/folder/big/a.jpg' 
>>> urljoin(base, href) 
'http://example.com/folder/big/a.jpg' 

dla Pythona 2, funkcja jest w module urlparse.

+0

(Aby uzyskać dostęp do hosta i względnego/bezwzględnego adresu URL, zobacz: http://stackoverflow.com/questions/8223939/how-to-join-absolute-and-relative-urls). –

+0

, ale co jeśli plik jpg znajduje się w http://example.com/foo/folder/big/a.jpg? – user2476540

+0

@ user2476540 Następnie adres URL podany w tagu 'a' jest niepoprawny. Wyjaśniłem powyżej, jak zachowuje się przeglądarka, widząc względny adres URL z wiodącym ukośnikiem. – poke

Powiązane problemy