Перестал работать скрипт BeautifulSoup при разборе результатов поиска Google

1

Я хотел бы проанализировать результаты поиска Google с помощью Python. Все работает отлично, но теперь я получаю пустой список. Вот код, который работал нормально:

query = urllib.urlencode({'q': self.Tagsinput.GetValue()+footprint,'ie': 'utf-8', 'num':searchresults, 'start': '100'})
result = url + query1
myopener = MyOpener()
page = myopener.open(result)
xss = page.read()
soup = BeautifulSoup.BeautifulSoup(xss)
contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})]

Этот script отлично работал в декабре, теперь он перестает работать.

Насколько я понимаю, проблема в этой строке:

contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})]

когда я печатаю содержимое, программа возвращает пустой список: []

Пожалуйста, кто-нибудь, помогите.

  • 3
    Вы пытаетесь делать автоматические запросы в обычный веб-интерфейс поиска Google? Вы не должны быть удивлены, если они блокируют вас; использовать их API.
  • 0
    это не так: результаты Супа присутствуют, я просто не могу разобрать Суп.
Показать ещё 1 комментарий
Теги:
beautifulsoup

1 ответ

4

API работает намного лучше. Простой JSON, который вы можете легко разобрать и манипулировать.

import urllib, json
BASE_URL = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&'
url = BASE_URL + urllib.urlencode({'q' : SearchTerm.encode('utf-8')})
raw_res = urllib.urlopen(url).read()
results = json.loads(raw_res)
hit1 = results['responseData']['results'][0]
prettyresult = ' - '.join((urllib.unquote(hit1['url']), hit1['titleNoFormatting']))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню