私はいくつかのファイルでurllib2オープナーを使ってPythonでHTMLファイルの一部を読むと(しかし、すべてではありません)、たくさんのバックスラッシュとUnicode 003c文字列が埋め込まれています。私はこのテキストをBeautifulSoupに送りますが、findAll()で探しているものを見つけるのが難しくなりました。私は現在、これらのすべてのUnicode文字列が原因だと考えています。ユニコードを変換/変換する方法は、読んだHTML文書で< and >をエスケープしましたか?
これで何が起こっているのですか。どのように取り除きますか?
soup.prettify()のようなアプローチは効果がありません。
はここにいくつかのサンプルコード(これはFacebookのプロフィールから来ている)
\\u003cdiv class=\\"pas status fcg\\">Loading...\\u003c\\/div>
\\u003c\\/div>\\u003cdiv class=\\"uiTypeaheadView fbChatBuddyListTypeaheadView dark hidden_elem\\" id=\\"u971289_14\\">\\u003c\\/div>
\\u003c\\/div>\\u003c\\/div>\\u003cdiv class=\\"fbNubFlyoutFooter\\">
\\u003cdiv class=\\"uiTypeahead uiClearableTypeahead fbChatTypeahead\\" id=\\"u971289_15\\">
\\u003cdiv class=\\"wrap\\">\\u003clabel class=\\"clear uiCloseButton\\" for=\\"u971291_21\\">
この同じHTMLページには、[ソース]ウィンドウで、微細で通常に見えるのです。
EDIT:このテキストを生成するコードは次のとおりです。奇妙なのは、他のHTMLページからこの種の出力を得られないということです。ここでは、ユーザー名とパスワードをUSERNAMEとPASSWORDに変更しました。これらの2つを置き換えると、自分のFBプロファイルでこれを試すことができます。
fbusername = "[email protected]"
fbpassword = "PASSWORD"
cookiefile = "facebook.cookies"
cj = cookielib.MozillaCookieJar(cookiefile)
if os.access(cookiefile, os.F_OK):
cf.load()
opener = urllib2.build_opener(
urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(debuglevel=0),
urllib2.HTTPSHandler(debuglevel=0),
urllib2.HTTPCookieProcessor(cj)
)
opener.addheaders = [('User-agent','Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1'),('Referer','http://www.facebook.com/')]
def facebooklogin():
logindata = urllib.urlencode({
'email' : fbusername,
'pass' : fbpassword,
})
response = opener.open("https://login.facebook.com/login.php",logindata)
return ''.join(response.readlines())
print "Logging in to Facebook...\n"
facebooklogin()
facebooklogin()
print "Successful.\n"
fetchURL = 'http://www.facebook.com/USERNAME?ref=profile&v=info'
f = opener.open(fetchURL)
fba = f.read()
f.close()
soup = BeautifulSoup(fba)
print soup
このテキストを生成するコードを掲載してください。 –
試し: 'unicodeTextFromUrlLib.encode( "ASCII"、 "無視")' は何私が言うことをしようとしていることである: '>>>のS = U "の\ u003c" >>> sの は、U '<' >>> s.encode( "ASCII"、 "無視") '<' ' –