for循环生成非法表达式错误

问题描述:

当我尝试使用迭代如下时,我得到非法表达式错误。for循环生成非法表达式错误

下面的代码:

from selenium import webdriver 

url='https://search.newyorkfed.org/fomc-docs/search?advanced_search=true&fomc_document_type=minutes&text=&search_precision=All+Words&from_month=3&from_year=1951&to_month=4&to_year=2017&sort=Relevance&Search=Search' 

driver = webdriver.Firefox() 
driver.get(url) time.sleep(5) 
htmlSource = driver.page_source time.sleep(5) 
for i in driver.find_elements_by_xpath('//*[@id="content"]/p[%s]/strong/a'%i): 
    print(i.get_attribute('href')) 
+0

你能澄清你到底想干什么吗?同时编辑你的问题,使其更易读 – Andersson

+0

Andersson-所以基本上我试图捕获页面中的所有href。对于无迭代的单个请求,它可以正常工作。但是当我使用迭代时,它会产生错误。我也在上面格式化了代码。 – lpt

+0

你认为这个'p [%s]'应该是什么?也许你想用别的东西代替'%i'?这是一个简单的错字吗? – Andersson

在你XPath表达i还没有确定,所以你不能使用它。反正i in driver.find_elements_...()应返回WebElement,所以是没有意义的XPath

使用它,我不知道究竟为什么你使用p[%s],但如果你想只是为了获得“结果”的所有链接,请尝试:

for link in driver.find_elements_by_xpath('//strong/a'): 
    print(link.get_attribute('href')) 
+0

好吧,这有帮助。谢谢。我想我过度思考。 – lpt