Очистка и анализ результатов поиска Google с помощью Python

попросил вопрос при реализации общей идеи для обхода и сохранения веб-страниц. Часть первоначального вопроса: как сканировать и сохранять много страниц "о программе" из интернета.

С некоторыми дальнейшими исследованиями у меня есть несколько вариантов, чтобы идти вперед как на выскабливание, так и на разбор (перечислены внизу).

сегодня я столкнулся с другим Ruby обсуждение о том, как очистить от результатов поиска Google. Это обеспечивает большую алтернативу для моего проблема, которая сэкономит все усилия на ползающей части.

новая вопрос are: в Python, чтобы наскрести Результаты поиска Google для данного ключевого слова, в данном случае "о", и, наконец, получить ссылки для дальнейшего анализа. Каковы наилучшие варианты методов и библиотек для продвижения вперед? (в меру легк-к-выучить и легк-к-снабдить).

п.С. в этот сайт, то же самое реализовано, но закрыто и попросите денег, чтобы получить больше результатов. Я бы предпочел сделать это сам, если нет открытого исходного кода и узнать больше Python в то же время.

о, Кстати, советы по разбору ссылок из результатов поиска были бы хорошими, если таковые имеются. Тем не менее, easy-to-learn и easy-to-implement. Только начал изучать Python. : P


последнее обновление проблема решена. Код с помощью xgoogle, пожалуйста, прочитайте примечание в разделе ниже, чтобы сделать xgoogle рабочий.

import time, random
from xgoogle.search import GoogleSearch, SearchError

f = open('a.txt','wb')

for i in range(0,2):
    wt = random.uniform(2, 5)
    gs = GoogleSearch("about")
    gs.results_per_page = 10
    gs.page = i
    results = gs.get_results()
    #Try not to annnoy Google, with a random short wait
    time.sleep(wt)
    print 'This is the %dth iteration and waited %f seconds' % (i, wt)
    for res in results:
        f.write(res.url.encode("utf8"))
        f.write("n")

print "Done"
f.close()

Примечание на xgoogle (ниже ответил Майк Пеннингтон): Последняя версия Github уже не работает по умолчанию из-за изменений в результатах поиска Google. Эти два ответа (a b) на домашней странице инструмента дайте решение, и в настоящее время он все еще работает с этой настройкой. Но может в другой день он может перестать работать снова из-за Гугла измененные блоки.


ресурсы, известные до сих пор:

  • для соскабливания, Scrapy кажется, популярный выбор и веб-приложение под названием ScraperWiki - Это очень интересно, и есть еще один проект extract это библиотека для автономного / локального использования. механизировать поднимался довольно много раз в разных дискуссиях.

  • для синтаксического анализа HTML, BeautifulSoup кажется, один из самых популярный выбор. Конечно. библиотека lxml тоже.

5 ответов


вы можете найти xgoogle полезное... многое из того, о чем вы, кажется, просите, есть...


есть твил lib для эмуляции браузера. Я использовал его, когда возникла необходимость войти в учетную запись электронной почты google. Хотя это отличный инструмент с отличной идеей, он довольно старый и, похоже, в настоящее время не имеет поддержки (последняя версия выпущена в 2007 году). Это может быть полезно, если вы хотите получить результаты, требующие обработки файлов cookie или проверки подлинности. Вероятно, что twill является одним из лучших вариантов для этих целей. Кстати, он основан на mechanize.

As для разбора вы правы,BeautifulSoup и Scrapy - это здорово. Одна из крутых вещей позади BeautifulSoup это то, что он может обрабатывать недопустимый HTML (в отличие от Genshi, например.)


посмотрите на эту удивительную оболочку urllib для веб-скрейпингаhttps://github.com/mattseh/python-web/blob/master/web.py


Это хорошо работает на данный момент. Если выполняется какой-либо поиск, Скребок может получить 100 элементов этого поиска, пройдя несколько страниц. Я попытался использовать функцию для безупречного завершения кода, но возникает проблема ipv4, и страница перенаправляется на страницу с captcha. Все еще смущен, почему это работает, но если он обернут в функцию, то он больше не будет работать. Кстати, скребок выглядит немного неудобно, потому что я дважды использовал один и тот же цикл в своем скребке, чтобы он не мог пропустить содержание первой страницы.

import requests ; from bs4 import BeautifulSoup

search_item = "excel"
base = "http://www.google.de"
url = "http://www.google.de/search?q="+ search_item

response = requests.get(url)
soup = BeautifulSoup(response.text,"lxml")
for item in soup.select(".r a"):
    print(item.text)
for next_page in soup.select(".fl"):
    res = requests.get(base + next_page.get('href'))
    soup = BeautifulSoup(res.text,"lxml")
    for item in soup.select(".r a"):
        print(item.text)

from urllib.request import urlopen
from bs4 import BeautifulSoup
import urllib.request
import re

import numpy as np
count=0
query=input("query>>")
query=query.strip().split()
query="+".join(query)

html = "https://www.google.co.in/search?site=&source=hp&q="+query+"&gws_rd=ssl"
req = urllib.request.Request(html, headers={'User-Agent': 'Mozilla/5.0'})

soup = BeautifulSoup(urlopen(req).read(),"html.parser")

#Regex
reg=re.compile(".*&sa=")

links = []
#Parsing web urls
for item in soup.find_all('h3', attrs={'class' : 'r'}):
    line = (reg.match(item.a['href'][7:]).group())
    links.append(line[:-4])

print(links)

это должно быть удобно....на - https://github.com/goyal15rajat/Crawl-google-search.git