Javascript PhantomJS和SeleniumWebDriver-如何抓取js加载的下一页表

Javascript PhantomJS和SeleniumWebDriver-如何抓取js加载的下一页表,javascript,selenium,Javascript,Selenium,每个人都告诉我,一旦我使用PhantomJS,我就会得到JS生成的表内容。但我还是失败了 我希望能在网站上找到这张桌子 第一页没问题 当我在page2的css选择器位置上使用click()来获取page2时,返回的内容仍然是page1。有什么问题 #coding:utf-8 from selenium import webdriver import time from selenium.webdriver.support.ui import WebDriverWait driver = web

每个人都告诉我,一旦我使用PhantomJS,我就会得到JS生成的表内容。但我还是失败了

我希望能在网站上找到这张桌子

第一页没问题

当我在page2的css选择器位置上使用click()来获取page2时,返回的内容仍然是page1。有什么问题

#coding:utf-8
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
driver.get("http://data.eastmoney.com/xg/xg/default.html")
time.sleep(2)
driver.find_element_by_css_selector("#PageCont > span.at").click()

list_cates = driver.find_element_by_css_selector("#dt_1 > tbody > tr:nth-child(1) > td:nth-child(2) > a").text
print(list_cates)

您的问题是,您没有在单击后等待数据更新。您需要等待一段时间,以便Ajax调用完成

#coding:utf-8
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
driver.get("http://data.eastmoney.com/xg/xg/default.html")
time.sleep(2)
driver.find_element_by_css_selector("#PageCont .next").click()

time.sleep(5)
list_cates = driver.find_element_by_css_selector("#dt_1 > tbody > tr:nth-child(1) > td:nth-child(2) > a").text
print(list_cates)
# Prints '太平鸟'
与第2页的数据相匹配


看我Tarun Lalwani,代码和图片如下:

 #coding:utf-8
    from selenium import webdriver
    import time
    from selenium.webdriver.support.ui import WebDriverWait

    driver = webdriver.PhantomJS()
    driver.get("http://data.eastmoney.com/xg/xg/default.html")
    time.sleep(2)
    for page_count in range(1,4):
        driver.find_element_by_id("gopage").send_keys(page_count)
        driver.find_element_by_css_selector("#PageCont > a.btn_link").click()
        time.sleep(10)
        list_cates = driver.find_element_by_css_selector("#dt_1 > tbody > tr:nth-child(1) > td:nth-child(2) > a").text
        print('get' + str(page_count) + 'pcs')
        print(list_cates)

在另一种情况下,我想通过PhantomJS获得框架表,但也失败了

    #coding:utf-8
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
driver.get("http://ipo.csrc.gov.cn/checkClick.action?choice=info#")
driver.find_element_by_css_selector("#type1 > a").click()

time.sleep(5)
result = driver.find_element_by_css_selector("#frame_body > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(3) > td:nth-child(1)").text
print(result)

我想我通过添加以下代码找到了案例1的解决方案:driver.find_element_by_id(“gopage”).clear()

但是另一个案例仍然需要你的帮助,非常感谢

#coding:utf-8
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
driver.get("http://data.eastmoney.com/xg/xg/default.html")
time.sleep(2)
for page_count in range(1,4):
    driver.find_element_by_id("gopage").clear()
    driver.find_element_by_id("gopage").send_keys(page_count)
    driver.find_element_by_css_selector("#PageCont > a.btn_link").click()
    time.sleep(5)
    list_cates = driver.find_element_by_css_selector("#dt_1 > tbody > tr:nth-child(1) > td:nth-child(2) > a").text
    print('get' + str(page_count) + 'pcs')
    print(list_cates)
    driver.find_element_by_id("gopage").clear()

我通过添加代码得到了案例2的解决方案:driver.switch_to_frame(“myframe”)

框架结构中需要解决的问题

还是非常感谢你解决了我的问题。这是我在Stackoverflow的第一场演出,我喜欢

#coding:utf-8
from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
driver.get("http://ipo.csrc.gov.cn/checkClick.action?choice=info#")

time.sleep(2)
driver.switch_to_frame("myframe")
result = driver.find_element_by_css_selector("#frame_body > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(3) > td:nth-child(1)").text
print(result)

单击()操作后,无法获取第2页上表的内容。。。“list_cates=driver.find_element_by_css_selector”(“#dt_1>tbody>tr:nth child(1)>td:nth child(2)>a”)。文本打印(list_cates)”Hi Tarun,非常感谢您。还有一个问题,我更新了代码,在第1-3页的第一行删除了数据。但总是反馈错误的结果,这是存在于第1页和最后一页。哦…我应该在哪里张贴图片和代码?我是stackoverflow的大一新生。。。。