我正在尝试登录 Twitter 以抓取最近的推文。我有以下代码:
import mechanize
from bs4 import BeautifulSoup
import time
import html5lib
twitter = 'https://mobile.twitter.com/session/new'
br = mechanize.Browser()
response1 = br.open(twitter)
br.select_form(nr=0)
br['username'] = 'MYUSERNAME'
br['password'] = 'MYPASSWORD'
br.submit()
req = br.click_link(text='Me[IMG]')
response = br.open(req)
soup = BeautifulSoup(response.read())
soup.prettify() #does nothing at all
soup.head #also does nothing at all
过去几天我在多个网站上使用 Mechanize + Beautiful soup 并没有遇到这个问题。哎呀,即使在 twitter 的其他一些页面上,上面的代码也可以正常工作。我尝试打印prettify()
,但它不起作用。它给了我以下错误:
UnicodeEncodeError:“ascii”编解码器无法在位置 6972 编码字符 u'\xb7':序数不在范围内(128)
我做了一些google-fu,我发现这与编码有关,所以我将我的代码调整为:
soup.prettify().encode('UTF-8')
这在大多数情况下都有效。我的意思是,它至少可以打印所有内容。但这些数据似乎都没有像往常一样在“汤”的实例中。例如,我无法访问soup.head
,不是soup.body
。Soup.find('foo')
什么都不做,以及普通的旧,soup.b
. 如果我打印soup.head
它返回的类型NoneType
,那么我会很困惑!
这里发生了什么?
编辑:什么..?为什么这被否决了?: (