我正试图从本网站上删除房地产数据:example 如您所见,相关内容已放入文章标签中。
我用phantomjs运行selenium:
driver = webdriver.PhantomJS(executable_path=PJSpath)
然后我在python中生成URL,因为所有搜索结果都是链接的一部分,所以我可以在程序中搜索我正在寻找的内容而无需填写表单。
致电
之前driver.get(engine_link)
我将engine_link复制到剪贴板,它在chrome中打开很好。 接下来,我等待所有可能的重定向发生:
def wait_for_redirect(wdriver):
elem = wdriver.find_element_by_tag_name("html")
count = 0
while True:
count += 1
if count > 5:
print("Waited for redirect for 5 seconds!")
return
time.sleep(1)
try:
elem = wdriver.find_element_by_tag_name("html")
except StaleElementReferenceException:
return
现在我终于想要迭代当前页面上的所有<article>
标签:
for article in driver.find_elements_by_tag_name("article"):
但是这个循环永远不会返回任何东西。该程序没有找到任何文章标签,我已经尝试使用xpath和css选择器。此外,这些文章都包含在章节标签中,也找不到。
Selenium中这种特定类型的标签是否有问题,或者我错过了JS相关的内容吗?在页面底部有一些JavaScript模板,其命名表明它们会生成搜索结果。
任何帮助表示赞赏!
答案 0 :(得分:1)
Pretend not to be PhantomJS
并添加Explicit Wait(为我工作):
from selenium import webdriver
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# set a custom user-agent
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = user_agent
driver = webdriver.PhantomJS(desired_capabilities=dcap)
driver.get("http://www.seloger.com/list.htm?cp=40250&org=advanced_search&idtt=2&pxmin=50000&pxmax=200000&surfacemin=20&surfacemax=100&idtypebien=2&idtypebien=1&idtypebien=11")
# wait for arcitles to be present
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.TAG_NAME, "article")))
# get articles
for article in driver.find_elements_by_tag_name("article"):
print(article.text)