1

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

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

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

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

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

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

4

2 回答 2

0

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

  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
于 2013-10-07T20:23:32.960 回答
0

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

于 2013-10-07T19:35:08.770 回答