0
[link]은 여기에 의 텍스트를 구문 분석하고 있습니다. python 셀렌 바인딩 사용 & chrome-driver 숨겨진 옵션 값을 클릭하려고합니다. source (driver.page_source). 선택할 수 없다는 것을 알고 있습니다. 여기 내 코드는 지금까지 있습니다 :python 셀렌 크롬 드라이버를 사용하여 소스에서 숨겨진 옵션 값을 선택하십시오.
import time, re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from docx import opendocx, getdocumenttext
from requests import Session
def read_return(word_file):
document = opendocx(word_file)
paratextlist = getdocumenttext(document)
newparatextlist = []
for paratext in paratextlist:
newparatextlist.append((paratext.encode("utf-8")).strip('\n').strip('\t').strip('\r'))
newparatextlist = str(newparatextlist).replace("]","").replace("[","")
with open('sample.txt','wb')as writer:
writer.write(newparatextlist)
return newparatextlist
word_file = read_return('Taxatierapport SEK - Auto Centrum Bollenstreek - Peugeot 308 - 5603.docx')
x = lambda x:re.findall(x,word_file,re.DOTALL)[0].strip().replace("'","'").replace('"',''')
Voertuig = x("::OBJECT::', '(.+?)'")
Merk = x("::MERK::', '(.+?)'")
Model = x("::TYPE::', '(.+?)'")
TOELATING = x("::BOUWJAAR 1STE TOELATING::', '(.+?)'")
d1 = TOELATING.split("-")[0]
d2 = TOELATING.split("-")[1]
d3 = TOELATING.split("-")[2]
TRANSMISSIE = x("::TRANSMISSIE::', '(.+?)'")
BRANDSTOF = x("::BRANDSTOF::', '(.+?)'")
print "%r\n%r\n%r\n%r\n%r\n%r\n%r\n%r\n" %(Voertuig, Merk, Model, d1, d2, d3, TRANSMISSIE, BRANDSTOF)
if Voertuig == "Personenauto":
value = 1
elif Voertuig == "Personenbussen":
value = 7
elif Voertuig == "Bedrijfsauto's tot 3.5 ton":
value = 3
elif Voertuig == "Bedrijfsauto's 4x4":
value = 2
elif Voertuig == "Motoren":
value= 5
xr = 0; yr = 0; zr = 1972
while xr < 32:
if int(d1) == xr:
dvalue1 = xr
else:
pass
xr+=1
while yr < 13:
if int(d2) == yr:
dvalue2 = yr
else:
pass
yr+=1
while zr < 2018:
if int(d3) == zr:
dvalue3 = zr
else:
pass
zr+=1
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://autotelexpro.nl/LoginPage.aspx')
driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtVestigingsnummer"]').send_keys('3783')
driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtGebruikersnaam"]').send_keys('Frank')
driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_Password"]').send_keys('msnauto2016')
driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_btnLogin"]').click()
time.sleep(10)
#try:
driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlVoertuigType"]/option[@value="'+str(value)+'"]').click()
driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwdag"]/option[@value="'+str(dvalue1)+'"]').click()
driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwmaand"]/option[@value="'+str(dvalue2)+'"]').click()
driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwjaar"]/option[@value="'+str(dvalue3)+'"]').click()
driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlMerk"]/option[@value="130"]').click()
#except:
driver.quit()
time.sleep(5)
driver.quit()
그래서 링크 &에 POST 요청이 필요한 옵션 데이터를 가지고 응답을 얻을 관리 할 수 있도록 요청 모듈을 사용하여, 여기 참조 :
<select name="ctl00$cp$ucSearch_Manual$ddlMerk" onchange="updateInputForServerNoPB();InvalidateVehicleSearchResult();setTimeout('__doPostBack(\'ctl00$cp$ucSearch_Manual$ddlMerk\',\'\')', 0)" id="ctl00_cp_ucSearch_Manual_ddlMerk" class="NormalDropdownlist" style="width:174px;">
<option selected="selected" value="-1">- Kies merk -</option>
<option value="95">Alfa Romeo</option>
<option value="154">Aston Martin</option>
<option value="96">Audi</option>
<option value="97">Bentley</option>
<option value="98">BMW</option>
<option value="352">Bugatti</option>
<option value="100">Cadillac</option>
<option value="342">Chevrolet</option>
<option value="101">Chevrolet USA</option>
<option value="102">Chrysler</option>
<option value="103">Citroen</option>
<option value="337">Corvette</option>
<option value="104">Dacia</option>
<option value="105">Daihatsu</option>
<option value="166">Daimler</option>
<option value="162">Dodge</option>
<option value="106">Donkervoort</option>
<option value="107">Ferrari</option>
<option value="108">Fiat</option>
<option value="94">Ford</option>
<option value="111">Honda</option>
<option value="340">Hummer</option>
<option value="112">Hyundai</option>
<option value="365">Infiniti</option>
<option value="113">Jaguar</option>
<option value="114">Jeep</option>
<option value="150">Kia</option>
<option value="115">Lada</option>
<option value="116">Lamborghini</option>
<option value="117">Lancia</option>
<option value="168">Land Rover</option>
<option value="432">Landwind</option>
<option value="118">Lexus</option>
<option value="119">Lotus</option>
<option value="120">Maserati</option>
<option value="330">Maybach</option>
<option value="121">Mazda</option>
<option value="122">Mercedes-Benz</option>
<option value="304">Mini</option>
<option value="124">Mitsubishi</option>
<option value="126">Morgan</option>
<option value="127">Nissan</option>
<option value="128">Opel</option>
<option value="130">Peugeot</option>
<option value="132">Porsche</option>
<option value="134">Renault</option>
<option value="135">Rolls-Royce</option>
<option value="138">Saab</option>
<option value="139">Seat</option>
<option value="140">Skoda</option>
<option value="226">smart</option>
<option value="343">Spyker</option>
<option value="210">SsangYong</option>
<option value="141">Subaru</option>
<option value="142">Suzuki</option>
<option value="417">Think</option>
<option value="144">Toyota</option>
<option value="147">Volkswagen</option>
<option value="145">Volvo</option>
</select>
나는 궁금 내가 드라이버 속성을 사용하여 옵션 값을 반복 할 수 있도록 내가, driver.page_source에 위의 문자열 텍스트를 추가 할 수의 어쨌든 무엇입니까?
이 thebadguy 감사합니다, 주된 목적은 driver.page_source에서 사용할 수 없었던 드롭 다운에서 Merk를 선택하는 것이 었습니다. ** Select class ** 사용법을 알지 못해서 정말 도움이되었습니다. –