Выскабливание URL-адресов от Google, включая диапазон дат - PullRequest
0 голосов
/ 08 марта 2020

Можно ли получить результаты за определенный период времени (например, с 02-02-2018 по 02-03-2018) из поиска Google, избегая ошибки HTTPSConnectionPool?

В настоящее время я использую следующий код

urls=[]
count=0

q='Brexit'

for url in search(q):
        r = requests.get(url, timeout=None)
        r.status_code
        count=count+1
        urls.append(url)   

, чтобы очистить URL, предпочтительно в указанное временное окно. Тем не менее я не могу сделать это, так как я получаю следующую ошибку:

HTTPSConnectionPool (host = 'www .___. Org', port = 443): Максимальное количество попыток превышено с помощью url: / Brexit / ( Вызвано NewConnectionError (': не удалось установить sh новое соединение: [Errno 60] Тайм-аут операции'))

, и я не знаю, могу ли я это исправить и / или как это сделать исправить это.
Не могли бы вы сказать мне, если есть способ избежать следующего сообщения об ошибке и получить результаты в указанном диапазоне дат? Спасибо за ваше время.

1 Ответ

1 голос
/ 09 марта 2020

Обобщите запрос, используя даты. Так что для Google, в частности, вы можете иметь операторы диапазона для конкретных c даты.

Если ваша search функция просто request.get('https://google.com/search?q={}'.format(q)), вы можете использовать следующий код:

urls=[]
count=0

q='Brexit before:02-03-2018 after:02-02-2018'

for url in search(q):
        r = requests.get(url, timeout=None)
        r.status_code
        count=count+1
        urls.append(url)   

Это решит проблему с датами. Для ошибки, я думаю, вы пытаетесь получить URL-адрес, где href '___'. Это может быть просто плохая ссылка, поэтому я бы добавил только попытку, кроме блокировки и регистрации. Таким образом, я бы рассмотрел фильтрацию больше (используя BeautifulSoup, чтобы получить только результаты. Поэтому код будет:

import request
from bs4 import BeautifulSoup

q='Brexit before:02-03-2018 after:02-02-2018'
req = request.get('https://google.com/search?q={}'.format(q), timeout=None)
soup = BeautifulSoup(req.content, 'html.parser')
hrefs = soup.find_all('a') # this is all the hrefs. 
for href in hrefs: 
     try: 
         r = requests.get(url)
     except Exception as e: 
         print(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...