1

スクレイピングされたコンテンツで相対 URL を絶対にして、スクレイピングされた html が元のように表示され、css が壊れないようにする方法は何ですか?

<base>タグが役立つことがわかりました。しかし、URL の元のベースが何であるかを調べるにはどうすればよいでしょうか?

リンクとの相互作用は気にしませんが、正しく表示されることを望みます。

2 つのリソースを持つサイト「example.com/blog/new/i.html」をスクレイピングするとします。

  1. < リンク src="/style/style.css" >
  2. < リンク src="newstyle.css" >。

ベースを「example.com/blog/new/i.html」に設定すると、最初のものは壊れません

4

2 に答える 2

0

JS については言えませんが、Python で BeautifulSoupやその他の HTML 解析ライブラリを使用してそれを行う方法については説明できます。

  1. タグを探す
  2. 相対 URL を確認する
  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 を追跡します。1 つの方法は、完全な URL をファイル名として保存することです。次に、HTML 仕様に従って相対 URL を解決できます。

于 2013-10-07T19:35:08.770 に答える