mix*_*mix 1 html python beautifulsoup
当我使用urllib2 opener在python中读取一些(但不是全部)HTML文件时,在某些文件中我得到的文本中填充了大量的反斜杠和unicode 003c字符串.我将此文本发送到BeautifulSoup并且无法使用findAll()找到我正在寻找的内容,而我现在认为这是由于所有这些unicode字符串.
这是怎么回事,我怎么摆脱它呢?
像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\\">
Run Code Online (Sandbox Code Playgroud)
在"查看源"窗口中,这个相同的HTML页面看起来很正常.
编辑:这是生成该文本的代码.奇怪的是,我没有从其他HTML页面获得这种输出.请注意,我已在此处用USERNAME和PASSWORD替换了用户名和密码.如果你替换这两个,你可以在自己的FB配置文件上尝试这个.
fbusername = "USERNAME@gmail.com"
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
Run Code Online (Sandbox Code Playgroud)
该u"""构造适用于Python 2.您省略了uPython 3.
>>> a=u"""\\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\\">
... """
>>> print(a.decode('unicode_escape')).replace('\\/', '/')
<div class="pas status fcg">Loading...<\/div>
<\/div><div class="uiTypeaheadView fbChatBuddyListTypeaheadView dark hidden_elem" id="u971289_14"><\/div>
<\/div><\/div><div class="fbNubFlyoutFooter">
<div class="uiTypeahead uiClearableTypeahead fbChatTypeahead" id="u971289_15">
<div class="wrap"><label class="clear uiCloseButton" for="u971291_21">
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.如果没有,请改进您在问题中提供的信息.
编辑:建议答案现在改变\/到/了.
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |