我正在尝试解析http://www.olx.pt/carros-cat-378-p-1。通过更改url中的最后一个数字,我可以遍历页面。页面在meta标记的内容类型中指定ISO-8859-1。因此,我告诉你在from\u编码参数中美化组。在
然而,当我找到所有的结果时。检查汤,我发现所有东西都弄乱了。当我得到一个零结果集并切换到另一个字符集时,我试图捕捉,例如cp1252和latin1。在
我觉得很奇怪,所有的HTML都被弄乱了,而且只是时不时。我也觉得很奇怪,当这种情况发生时,我不知道使用的是哪个字符集。有人知道这里发生了什么事吗?在
代码import mechanize
import cookielib
from bs4 import BeautifulSoup
def getNewBrowser():
# create browser instance
b = mechanize.Browser()
# create a cookiejar for cookies
jar = cookielib.LWPCookieJar()
b.set_cookiejar(jar)
# prevent mechanize from simulating a 403 disallow
b.set_handle_robots(False)
# handle some other stuff
b.set_handle_equiv(True)
#b.set_handle_gzip(True)
b.set_handle_redirect(True)
b.set_handle_referer(True)
# follows refresh 0 but not hangs on refresh >0
b.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# want debugging messages?
#br.set_debug_http(True)
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
# User-Agent
b.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0')]
return b
def run():
b = getNewBrowser()
url = "http://www.olx.pt/carros-cat-378-p-"
n = 100
for i in range(1,n):
urlt = url + str(i)
b.open(urlt, timeout = 10.0)
soup = BeautifulSoup(b.response(), from_encoding="ISO-8859-1")
print "--------------------------------------------------------------------"
print "page: " + str(i)
print "--------------------------------------------------------------------"
print soup
if __name__ == '__main__':
run()