最近,我想制作一个网络爬虫,我是编程的新手。我知道这个错误在stackoverflow.com中很常见,但我研究并尝试了数百万次。它仍然失败了。 下面是我的代码,它是半成品。
import requests
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
chrome_path = "C:\Program Files\Anaconda3\Scripts\chromedriver.exe"
web = webdriver.Chrome(chrome_path)
web.get('https://www.agoda.com/zh-tw/pages/agoda/default/DestinationSearchResult.aspx?asq=%2bZePx52sg5H8gZw3pGCybdmU7lFjoXS%2baxz%2bUoF4%2bbAP7QU5sGtWmrzIvlWpeSVhG7hBqSW0J1d8hA8mgoocSdtpIj66gXToDH6PLoebpS2%2b7zRXCrzWTxWGJcCS2%2b98%2bkomkepA8A1QWe2FGYglfZpxj%2fA%2bylTfAGs1qJCjm9nxgYafyEWBFMPjt2sg351B&city=18343&tick=636125544363&isdym=true&searchterm=%E5%A2%BE%E4%B8%81&pagetypeid=1&origin=TW&cid=-1&htmlLanguage=zh-tw&checkIn=2016-10-25&checkOut=2016-10-26&los=1&rooms=1&adults=2&children=0&isFromSearchBox=true&ckuid=db61c7c8-1cf8-4b14-9c04-9c8aababbac5')
soup=BeautifulSoup(web.page_source,"lxml")
#wait=ui.WebDriverWait(web,10)
a=1
hotelname=web.find_elements_by_class_name("hotel-name")
try:
while len(soup.select('.btn-right')) >0:
print("page",a)
a=a+1
for number,name in enumerate(hotelname):
print(number,name.text.strip())
#time.sleep(1)
if len(soup.select('.btn-right'))>0 :
web.find_element_by_id("paginationNext").click()
soup=BeautifulSoup(web.page_source,"lxml")
hotelname=web.find_elements_by_class_name("hotel-name")
else:
break
web.close()
except:
time.sleep(3)
print("wake up")
WebDriverWait(web,10).until(EC.element_to_be_clickable(By.XPATH,"//button[@data-selenium='pagination-next-btn']"))
web.find_element_by_id("paginationNext").click()
print("click ok")
当我运行此代码时,收到错误消息:
文件“C:/Users/Elvis/.spyder-py3/driver2.py”,第77行, WebDriverWait(网页,10)。直到(EC.element_to_be_clickable(By.CLASS_NAME, “分页-下一BTN”)) TypeError:__ init __()需要2个位置参数,但有3个被赋予
我猜这行中有一个错误
WebDriverWait(web,10).until(EC.element_to_be_clickable(By.XPATH,"//button[@data-selenium='pagination-next-btn']"))
我只想检查此按钮是否可点击,或等待10秒钟。 我尝试调整路径和标记很多次,但不起作用。 顺便说一句,我使用python3,win10和chromedriver。 如果您有任何想法,请帮助我,我真的想解决这个问题,并完成我的第一个网络爬虫。 谢谢。
答案 0 :(得分:1)
你应该向#{1}}提供args元组,而不是两个单独的args element_to_be_clickable((locator type, locator))
element_to_be_clickable(locator type, locator)