Как получить HTML-контент после входа в Instagram с библиотекой запросов - PullRequest
0 голосов
/ 03 апреля 2019

Этот вопрос был отредактирован, см. Обновление ниже

Я пытаюсь получить заголовок (содержимое HTML-тега) определенного URL-адреса для ответа 404. Я хочу получитьсодержимое только когда возвращает 404, потому что я проверяю, доступно ли имя пользователя instagram, используя URL с таким именем пользователя, например:

https://instagram.com/jsd23sdoleo

, которое возвращает страницу 404 html с заголовком Страница не найдена .

Теперь есть URL, подобные этому:

https://www.instagram.com/leop

Скриншот недоступен для содержимого Скриншот страницы не найден

Где этовозвращает заголовок Контент недоступен в браузере.Оказывается, что когда он возвращает «Content Unavaiable», имя пользователя не берется, но также не доступно.Единственный случай, который не берется и недоступен, это когда он возвращает «Страница не найдена».

Но мой код на Python выводит только Страница не найдена в качестве заголовка даже для URL, которые вбраузер показывает недоступность контента .

Есть ли причина для неправильного получения HTML-контента для этих URL-адресов?

ОБНОВЛЕНИЕ: Мой код Python приносит только "Страница не найдена », потому что когда я тестирую в своем браузере, я вхожу в систему, поэтому поведение отличается.Есть ли способ получить страницу HTML после входа в систему с библиотекой запросов?

Вот мой код, чтобы вы могли проверить его:


import urllib.request
from bs4 import BeautifulSoup
import requests

chars_clean = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','z','0','1','2','3','4','5','6','7','8','9']
chars = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','z','0','1','2','3','4','5','6','7','8','9','_','.']
base_url = 'https://www.instagram.com/'
leo = 'leo'
urls = []
valid_urls = []
user = []

for char_clean in chars_clean:
  for char in chars:
    urls.append(base_url + char_clean + char + leo)



for url in urls:
  try:
    #fetch html
    source = urllib.request.urlopen(url)
    #parse with BeautifulSoup
    BS = BeautifulSoup(source, "html5lib")
    #search for title element, print element.text
    title = BS.title.string
  except urllib.error.URLError as err:
    if err.code == 404:

      response = requests.get(url)
      soup = BeautifulSoup(response.text, "html5lib")
      title = soup.title.string
      print("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
      print(url)
      #x = url.split('m/')
      print(title) # Prints
      print('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
      continue
    else:
      valid_urls.append(url)


...