所以我看了一些源代码,我遇到了这段代码
<img src="/gallery/2012-winners-finalists/HM_Watching%20birds2_Shane%20Conklin_MA_2012.jpg"
现在在源代码中链接为蓝色,当您单击它时,它会将您带到该图片所在的完整URL,我知道如何使用Beautiful Soup获取Python源代码中显示的内容想知道如何点击源代码中的链接获得完整的URL?
编辑:
如果给我<a href = "/folder/big/a.jpg"
你如何通过蟒蛇或美丽的汤找出那个网址的起始部分?
答案 0 :(得分:19)
<a href="/folder/big/a.jpg">
这是当前主机的绝对地址。因此,如果HTML文件位于http://example.com/foo/bar.html
,那么应用网址/folder/big/a.jpg
会导致:
http://example.com/folder/big/a.jpg
即。获取主机名并将新路径应用于它。
Python具有内置urljoin
函数来为您执行此操作:
>>> 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'
对于Python 2,该函数位于urlparse
模块中。
答案 1 :(得分:0)
from bs4 import BeautifulSoup
import requests
import lxml
r = requests.get("http://example.com")
url = r.url # this is base url
data = r.content # this is content of page
soup = BeautifulSoup(data, 'lxml')
temp_url = soup.find('a')['href'] # you need to modify this selector
if temp_url[0:7] == "http://" or temp_url[0:8] == "https://" : # if url have http://
url = temp_url
else:
url = url + temp_url
print url # this is your full url