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

时间:2013-10-07 18:29:08

标签: javascript python html

有哪些方法可以使相对网址在抓取的内容中保持绝对,以便抓取的html看起来像原始的并且css没有被破坏?

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

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

假设一个网站'example.com/blog/new/i.html'我刮了2个资源

  1. &LT; link src =“/ style / style.css”&gt;
  2. &LT; link src =“newstyle.css”&gt;。
  3. 现在,如果我将base设置为'example.com/blog/new/i.html',那么第一个休息时间

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

  5. 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