获取网页中的所有链接

时间:2017-09-12 15:34:09

标签: python hyperlink

尝试从网页中提取所有链接,尝试了几个代码。例如,我试过

from urllib.request import urlopen
import lxml.html
connection = urlopen('http://sentinel-s2-l1c.s3-website.eu-central1.amazonaws.com/')

dom =  lxml.html.fromstring(connection.read())

for link in dom.xpath('//a/@href'): # select the url in href for all atags(links)
    print(link)

但它虽然适用于其他网页,但它不适用于我想要提取的网页。我正在尝试的网页是          网页=' http://sentinel-s2-l1c.s3-website.eu-central-1.amazonaws.com/'

我想知道的事情:这个网站是一个特殊的网站吗?据我所知,它是亚马逊网络服务的云存储。

我该怎么做这个网站? 我是python的新手,对它的了解很少。请原谅我的任何错误。

1 个答案:

答案 0 :(得分:0)

这实际上不是一个Python问题,它是一个HTML问题。该网站上的链接是相对链接。例如,有链接“#products /”。当您点击它时,您的浏览器会将您带到http://sentinel-s2-l1c.s3-website.eu-central-1.amazonaws.com/#products/;您的浏览器知道将“http://sentinel-s2-l1c.s3-website.eu-central-1.amazonaws.com/”部分放在开头,因为这就是它所在的网站。但是,当您提取链接时,您只会获得“#products /”部分,如果您将其发布到浏览器的URL栏中,则不会将您带到正确的页面,因为现在您的浏览器不会知道相关链接的网站。您需要跟踪parent_url变量,并修改“{} relative_url”.format(parent_url)的相对链接。你还应该检查一下是否在parent_url的末尾有一个斜杠,如果没有则添加一个斜杠。