Web Scrapping не получает полные данные исходного кода через Selenium / BS4 - PullRequest
0 голосов
/ 20 декабря 2018

enter image description here

Как удалить данные во входном теге, атрибуты значения из источника, который я проверяю, как показано на рисунке?Я пытался использовать красивый суп и селен, ни один из них не работает для меня.частичный код, как показано ниже:

html = driver.page_source

output = driver.find_element_by_css_selector ('# bookingForm> div: nth-child (1)> div.bookingType> div:nth-child (15)> div.col-md-9> input '). get_attribute ("value")

print (output)

возвращает NoSuchElementException ошибка InФакт, когда я пытаюсь print(html), многие данные исходного кода, кажется, отсутствуют.Я подозреваю, что это могут быть проблемы, связанные с JS, но селен, который работает большую часть времени, рендеринг JS не работает для меня на этом сайте, любая идея?

пробовал и это тоже,

html = driver.page_source

soup = bs4.BeautifulSoup (html, 'lxml')

test = soup.find ("input", {"class": "inputDisable"})

print (тест)

print (суп)

print (тест) не возвращает ни одного, а print (суп) возвращает источник сбольшинство тегов ввода полностью отсутствуют

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Попробуйте использовать функции find или find_all.(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)

from requests import get
from bs4 import BeautifulSoup

url = 'your url'
response = get(url)
html_soup = BeautifulSoup(response.text, 'html.parser')
bs = BeautifulSoup(response.text,"lxml")
test = bs.find("input",{"class":"inputDisable"})

print(test)
0 голосов
/ 20 декабря 2018

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

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

browser = webdriver.Firefox()
browser.get("url")
delay = 3 # seconds
try:
    myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
    print "Page is ready!"
except TimeoutException:
    print "Loading took too much time!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...