Python Поиск на сайте Bloomberg адресов компаний - получение кода проверки «Вы робот?» При получении содержимого html с URL-адреса - PullRequest
0 голосов
/ 28 мая 2020

Мой python файл находится в проекте scrapy, а мой файл settings.py в spyder имеет robotstxt_obey = False. Я успешно установил и импортировал pandas, scrapy, spyder, beautifulsoup, запросы.

, но все же, когда выполняется приведенный ниже код, я получаю сообщение «Вы робот?» Ошибка капчи при получении кода HTML. Я видел много постов с ответами на аналогичный вопрос. Однако я не могу устранить ошибку. Я не могу поместить весь код, но помещаю основное тело, в котором есть проблемы. Надеюсь, мой вопрос ясен, помогите пожалуйста. Заранее спасибо.

Код:

if pd.isnull(row['Company']) == False or pd.isnull(row['Domain']) ==
False :
          #OR (pd.isnull(row['Company']) == False AND pd.isnull(row['Company']) == False)
          # pd.isnull(row['City']) == True and and pd.isnull(row['Address']) == True
          listUrl = []
          print(row['Domain'])
          if pd.isnull(row['Company']) == False:
              listUrl = get_urls(row['Company'] +' bloomberg', 10, 'en')
          else:
              listUrl = get_urls(row['Domain'] + ' bloomberg', 10, 'en')
          for item1 in listUrl:
              print("in bloomberg 1")
              print(item1)
              if 'www.bloomberg.com/profile/company/' in item1:
                  print("in bloomberg 2")
                  res = requests.get(item1, headers=headers)
                  print(res.content)
                  soup2 = bs(res.content, 'html.parser')
                  items = soup2.findAll("div", {"class": "infoTableItemValue__e188b0cb"})
                   print(items)

1 Ответ

0 голосов
/ 30 августа 2020

У меня была такая же проблема, но я мог исправить ее, добавив «user-agent»: Mozilla / 80.0 в заголовок моего запроса. Я также предлагаю добавить некоторую обработку ошибок, чтобы избежать взрыва вашего кода, когда вы не можете установить sh соединение из-за блокировки.

for url in start_links[0:]:
    try:
        response = requests.get(url[0], timeout=5, cookies=cookies, headers={"user-agent": "Mozilla/80.0"})
        print(response, url)

    except NewConnectionError:
        continue 
...