コーデックを含むこの特定の HTML ページがあります
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
BeautifulSoup を使用してこの特定のファイルを解析しようとすると、常に NULL オブジェクトが返されます。次を使用して変換できます。
page = codecs.open('file_name', 'r', 'cp1251')
soup = BeautifulSoup(page.read())
今では正常に動作しています。しかし、私のコレクションには、UTF-8とwindows-1251の両方の文字セット タイプで構成されるページがあります。それで、特定の HTML ページの文字セットを決定し、それが windows-1251 形式の場合はそれに応じて変換する手順を知りたいと思いました。
私はこれを見つけました:
soup.originalEncoding
しかし、そのためには「スープ」にロードする必要があります。しかし、「None type object」を返すだけです。どんな助けでも大歓迎です。
私はPython 2.7を使用しています
編集:
これが私が実際に言おうとしていることの例です:
これは私のコードです:
from bs4 import BeautifulSoup
import urllib2
page=urllib2.urlopen(Page_link)
soup = BeautifulSoup(page.read())
print soup.html.head.title
持っているページ
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ページのタイトルを正しく表示します。
ページに
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
出力は
AttributeError: 'NoneType' オブジェクトには属性 'head' がありません
これで、上記のコーデック ライブラリを使用してこれを修正できます。私が見つけようとしているのは、エンコーディングを適用できるようにする方法です。
これらは、特定の情報をクロールして収集しようとしている 2 つのサイトです。