有哪些
方法可以使抓取内容中的相对URL绝对,以便抓取的html看起来像原始的并且css不会损坏?
我发现<base>
标签可能会有所帮助。但是我怎样才能知道URL的原始基础是什么?
我不关心与链接的交互,但确实希望它们看起来正确。
假设我抓取的站点"example.com/blog/new/i.html"有 2 个资源
- <链接 src="/style/style.css">链接>
- <链接 src="newstyle.css">。 链接>
现在,如果我将基础设置为"example.com/blog/new/i.html",第一个不会中断
跟踪您抓取的每个页面的网址。一种方法是将其与完整 URL 保存为文件名。然后,您可以根据 HTML 规范解析相对 URL。
不能
说JS,但我可以告诉你如何使用BeautifulSoup或任何其他html解析库在Python中做到这一点。
- 查找标签
- 检查相对网址
- 将它们替换为base_url+relative_url
- 页面可供查看
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