Web报废无法通过Selenium / BS4获得完整的源代码数据

时间:2018-12-20 15:27:18

标签: python selenium beautifulsoup

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>输入').get_attribute(“值”)

打印(输出)

返回groupby错误 实际上,当我尝试NoSuchElementException时,似乎缺少许多源代码数据。我怀疑这可能是与JS相关的问题,但是硒在大多数情况下都有效,因此JS在我的网站上无法正常工作吗?

也尝试过这些

html = driver.page_source

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

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

打印(测试)

打印(汤)

打印(测试)不返回任何内容,而打印(汤)返回大多数输入标签完全缺失的来源

3 个答案:

答案 0 :(得分:1)

通过检查页面来检查此元素是否存在于此站点上。 如果存在硒,很多时候硒太快并且页面有时无法完全加载。请尝试硒的 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!"

答案 1 :(得分:0)

尝试使用findfind_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)

答案 2 :(得分:0)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import urllib.request
import time
from bs4 import BeautifulSoup
from datetime import date



URL="https://yourUrl.com"

# Chrome session
driver = webdriver.Chrome("PathOfTheBrowserDriver")
driver.get(URL)
driver.implicitly_wait(100)
time.sleep(5)

soup=bs4.BeautifulSoup(driver.page_source,"html.parser")

尝试,在做汤之前,用您的代码创建一个中断,以使请求能够完成工作(某些较晚的请求可能包含您要查找的内容)