Неполный HTML-ответ на некоторых сайтах, использующих Requests & BeautifulSoup или Selenium

Я пытаюсь собрать информацию с некоторых URL-адресов, используя Requests и BeautifulSoup в Python. Но некоторые сайты возвращают только частичный HTML-ответ, в котором отсутствует содержимое страницы.

Это код, который не работает:

import requests
from bs4 import BeautifulSoup
url = "http://www.exampleurl.com"
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')

Вот неполный ответ: Изображение

Вместо этого я попытался использовать Selenium с Chrome Webdriver, но столкнулся с той же проблемой.

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
browser = webdriver.Chrome(options=options)
browser.get(url)
html = browser.page_source

Любые идеи?


person Hank    schedule 09.01.2021    source источник
comment
См. этот stackoverflow.com/ вопросы/45246280/   -  person Kishan Yadav    schedule 09.01.2021


Ответы (1)


Что происходит

  1. Вы не получаете ожидаемый html, потому что он находится в iframe
  2. Попробуйте получить src iframe soup.find('iframe')['src'] и снова запросите его.

Пример

import requests
from bs4 import BeautifulSoup
url = "http://www.ingenieur-jobs.de/jobangebote/3075/"
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')

iframe = requests.get(soup.find('iframe')['src'])

soup = BeautifulSoup(iframe.content, 'html.parser')
soup
person HedgeHog    schedule 09.01.2021