Ошибка HTTP 403: запрещено / попробуйте сканировать Google - PullRequest
0 голосов
/ 08 июня 2018

Я хочу автоматически искать информацию о компании в Google.Пожалуйста, смотрите мой код, как показано ниже.Ошибка HTTP 403: Запрещено или Ошибка HTTP 404: Запрещено случиться.

from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib import parse
import openpyxl


wd = openpyxl.load_workbook('C:/Users/Lee Jung 
Un/Documents/hopeyouwork.xlsx')#locate of excel file.
ws = wd.active

def bs(Eng_name):
    url = "https://www.google.co.kr/search?ei=hWEaW-bKEMnb8QWa1IrQDw&q="
    q = parse.quote(Eng_name)
    html = urlopen(url + q)
    bsObj = BeautifulSoup(html, "html.parser")
    twg = bsObj.select("div.ifM9O > div:nth-child(2) > div.kp-header > div > 
    div.DI6Ufb > div > div > div.d1rFIf > div.kno-ecr-pt.kno-fb-ctx > span")

    if bool(twg):
        return twg.text    
    else:
        info = "none"
        return info


def companyname():
    for r in ws.rows:
        row_index = r[0].row
        Eng_name = r[1].value
        Kor_name = bs(Eng_name)
        ws.cell(row=row_index, column=1).value = row_index
        ws.cell(row=row_index, column=2).value = Eng_name
        ws.cell(row=row_index, column=3).value = Kor_name
        wd.save("Done.xlsx")
    wd.close()

 companyname()

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы были заблокированы Google, вероятно.Посмотрите, можете ли вы получить доступ к URL из браузера.Вам нужно добавить user agent в заголовки и задержку между каждым URL-запросом и может быть подключен через прокси, если вы заблокированы надолго.

Могу ли я предложить использовать пакет requests, который построен поверх urllib и обеспечивает большую гибкость при кодировании.

ex:

headers = {
    'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) '
                  'Gecko/20100101 Firefox/61.0'),
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}

## proxies is optional

ip = 'blah-blah'
port = 'blah'

proxies = {"http": 'http://' + ip + ':' + port,
           "https": 'http://' + ip + ':' + port}

html = requests.get(url, headers=headers, proxies=proxies)

Добавление задержки ##

на time.sleep(number)

def companyname():
    for r in ws.rows:
        row_index = r[0].row
        Eng_name = r[1].value
        Kor_name = bs(Eng_name)

        #add delay after each crawl
        time.sleep(5) #sleeps for 5 seconds

        ws.cell(row=row_index, column=1).value = row_index
        ws.cell(row=row_index, column=2).value = Eng_name
        ws.cell(row=row_index, column=3).value = Kor_name
        wd.save("Done.xlsx")
    wd.close()
0 голосов
/ 08 июня 2018

Попробуйте установить User-Agent HTTP-заголовок .По умолчанию строки User-Agent популярных программных библиотек запрещены на многих веб-серверах во избежание злоупотреблений, вызванных ботами.

Также помните, что в Google есть и другие ограничения, например ограничение на количество запросов, которые вы можете выполнить.В какой-то момент вам могут показать CAPTCHA или даже запретить дальнейшие запросы с IP, если вы делаете слишком много запросов.

Если это ваш случай, вам, вероятно, придется прочитать их документацию и подумать, что некоторые функциине может быть бесплатным.

...