我如何从输入检查的来源中将输入标签中的数据剪贴为值属性,如图所示? 我曾尝试使用美丽的汤和硒,但它们都不适合我。 部分代码如下:
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”})
打印(测试)
打印(汤)
打印(测试)不返回任何内容,而打印(汤)返回大多数输入标签完全缺失的来源
答案 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)
尝试使用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)
答案 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")
尝试,在做汤之前,用您的代码创建一个中断,以使请求能够完成工作(某些较晚的请求可能包含您要查找的内容)