Подтвердить что ты не робот

Скремблирование и анализ результатов поиска Google с использованием Python

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

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

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

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


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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 4

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

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)

Ответ 5

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