грешка при разбора на beautifulsoup в нежелани символи на python

Код – не знам какво направих, за да накарам BeautifulSoup (BS) да не работи

import mechanize
import urllib2
from bs4 import BeautifulSoup

#create a browser object to login
browser = mechanize.Browser()

#tell the browser we are human, and not a robot, so the mechanize library doesn't block us
browser.set_handle_robots(False)

browser.addheaders = [('User-Agent','Mozilla/5.0 (Windows U; Windows NT 6.0; en-US; rv:9.0.6')]
#url
url = 'https://www.google.com.au/search?q=python'
#open the url in our virtual browser
browser.open(url)
html = browser.response().read()
print html
soup = BeautifulSoup(html)
print(soup.prettify())

Грешка

HTMLParseError: junk characters in start tag: u'{t:1}); class="gbzt ', at line 1, column 42892

<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-AU"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/google_favicon_128.png" itemprop="image"><title>python - Google Search</title><style>#gb{font:13px/27px Arial,sans-serif;height:30px}#gbz,#gbg{position:absolute;white-space:nowrap;top:0;height:30px;z-index:1000}#gbz{left:0;padding-left:4px}#gbg{right:0;padding-right:5px}#gbs{background:transparent;position:absolute;top:-999px;v

person yoshiserry    schedule 18.05.2014    source източник
comment
Изглежда, че удряте грешки, защото въвеждате css в html и се опитвате да го анализирате като HTML. Тук има подобен въпрос, който може да помогне stackoverflow.com/questions/10401110/   -  person Craicerjack    schedule 19.05.2014
comment
@yoshiserry кодът работи добре за мен, каква версия на Python използвате?   -  person Padraic Cunningham    schedule 19.05.2014
comment
2,7? трябва ли да инсталирам lxml парсер? може би?   -  person yoshiserry    schedule 19.05.2014
comment
може би командата mechanize получава css и html, където beautofulsoup(bs) обикновено би получавал само html?   -  person yoshiserry    schedule 19.05.2014
comment
@yoshiserry, аз също използвам 2.7 без проблем, вашият скрипт получава и отпечатва всичко добре. Искате ли просто да анализирате страницата?   -  person Padraic Cunningham    schedule 19.05.2014
comment
Да, исках да се упражнявам да използвам beautifulsoup за анализиране на страницата и извличане на връзки, или div, или a, или href елементи от нея. ако ти и аз имаме 2.7 защо при теб работи, а при мен не? кога същия код?   -  person yoshiserry    schedule 19.05.2014
comment
@yoshiserry добавих отговор, опитайте да използвате заявки и вижте как ще се справите.   -  person Padraic Cunningham    schedule 19.05.2014


Отговори (1)


Опитайте да използвате заявки:

import requests
from bs4 import BeautifulSoup
#url
url = 'https://www.google.com.au/search?q=python'
r=requests.get(url)
html = r.text
print html
soup = BeautifulSoup(html)
print(soup.prettify())
person Padraic Cunningham    schedule 18.05.2014
comment
уау страхотно благодаря работи. Толкова съм объркан защо beautifulsoup не работи. - person yoshiserry; 19.05.2014
comment
той използва заявки, но не и beautifulsoup, той избълва нежелани символи, които очевидно съм изтеглил. - person yoshiserry; 19.05.2014
comment
може би не го инсталирах правилно, някои други модули, които инсталирах от бинарните пакети на Крис, също не работят. Гледам те pyQt4 - person yoshiserry; 19.05.2014
comment
има ли библиотеката с заявки способността да принуди страницата да изчака, докато не бъде изтеглена цялата (javascript генерира динамично съдържание на страницата) Бих искал да изтрия динамичното съдържание, което генерира javascript. - person yoshiserry; 19.05.2014