如何最好地处理抓取内容中的相对网址


有哪些

方法可以使抓取内容中的相对URL绝对,以便抓取的html看起来像原始的并且css不会损坏?

我发现<base>标签可能会有所帮助。但是我怎样才能知道URL的原始基础是什么?

我不关心与链接的交互,但确实希望它们看起来正确。

假设我抓取的站点"example.com/blog/new/i.html"有 2 个资源

  1. <链接 src="/style/style.css">
  2. <链接 src="newstyle.css">。

现在,如果我将基础设置为"example.com/blog/new/i.html",第一个不会中断

跟踪您抓取的每个页面的网址。一种方法是将其与完整 URL 保存为文件名。然后,您可以根据 HTML 规范解析相对 URL。

不能

说JS,但我可以告诉你如何使用BeautifulSoup或任何其他html解析库在Python中做到这一点。

  1. 查找标签
  2. 检查相对网址
  3. 将它们替换为base_url+relative_url
  4. 页面可供查看

base_url = 'http://www.Python-The-Bagpiper.com'
content = urlopen(url).read()
soup = BeautifulSoup(content)
img_tags = soup.findAll('img')
link_tags = soup.findAll('link')
a_tags = soup.findAll('a')
#add any other tag with links

for tags in img_tags + link_tags + a_tags:
    attr_name = 'src' if tag.get('src') else 'href' if tag.get('href') else None
    url = tag.get(attr_name)
    if url and 'http://' not in url and url[0] is not '#':
        fullurl = base_url + url
        tag[attr_name] = fullurl
print soup.prettify

最新更新