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



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



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



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



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



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



О, кстати, советы по разбору ссылок из результатов поиска были бы хороши, если таковые имеются. Тем не менее, легкий в освоении и простой в реализации. Только начал изучать 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 (ниже отвечает Майк Пеннингтон):
То последняя версия от it's Github уже не работает по умолчанию, вероятно, из-за изменений в результатах поиска Google. Эти два ответа (a b ) на домашней странице инструмента дают решение, и в настоящее время он все еще работает с этой настройкой. Но, возможно, в какой-то другой день он снова перестанет работать из-за изменения/блокировки Google.





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





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



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


770   5  

5 ответов:

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

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

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

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

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

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

Comments

    Ничего не найдено.