在python中模拟单击javascript链接

在python中模拟单击javascript链接,javascript,python,selenium,web-scraping,spidermonkey,Javascript,Python,Selenium,Web Scraping,Spidermonkey,我正在整理餐馆的评论。Urllib2在最初的评论页面上运行良好,但随后会有一个链接来加载下一个注释增量,这是一个javascript链接。示例页面为,链接“Next 25”的代码为: 通过id=“ctl00\u contentplaceholder 1\u RestRatings\u Next”查找元素,然后单击它。当用户单击该链接时,将在客户端上的javascript中调用函数“doPostBack”。您提供的另一个问题的链接假定此函数进行AJAX调用,然后将结果放在同一页面中 但是,您链接到

我正在整理餐馆的评论。Urllib2在最初的评论页面上运行良好,但随后会有一个链接来加载下一个注释增量,这是一个javascript链接。示例页面为,链接“Next 25”的代码为:


通过
id=“ctl00\u contentplaceholder 1\u RestRatings\u Next”
查找元素,然后单击它。

当用户单击该链接时,将在客户端上的javascript中调用函数“doPostBack”。您提供的另一个问题的链接假定此函数进行AJAX调用,然后将结果放在同一页面中

但是,您链接到的评论页面不会这样做。它确实发出了一个AJAX调用,但随后会重新加载相同的页面。我无法理解AJAX调用是什么,因为它会立即重新加载,但由于页面只是重新加载了新的注释,我很确定它会告诉服务器将您移动到下一个页面


因此,为了获得下一页的评论,您必须调用与uu doPostBack函数调用的url相同的url,然后重新加载您所在的页面。为了找到这个url,我将对他们的javascript进行模糊处理,并找到正在调用的函数。我相信将被调用的实际URL将取决于该函数的参数,因此您需要确保复制它的功能

谢谢,我在javascript(“www”、“http”、“review”)中找不到类似url的东西,所以我选择了selenium暴力方法!
<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$RestRatings$Next','')" class="red" id="ctl00_ContentPlaceHolder1_RestRatings_Next">NEXT 25&gt;&gt; </a>
from selenium import webdriver
from BeautifulSoup import BeautifulSoup
import re

driver = webdriver.Firefox()

def getURLinfo(url):

    driver.get(url)
    html = driver.page_source
    next25 = "ctl00_ContentPlaceHolder1_RestRatings_Next"
    soup = BeautifulSoup(html)

    while soup.find(id=re.compile(next25)):            
        driver.find_element_by_id(next25).click()
        html = html + driver.page_source
        soup = BeautifulSoup(driver.page_source)

    soup = BeautifulSoup(html)
    comment = soup.findAll(id=re.compile("divComment"))

    for entry in comment:
        print entry.div.contents #for comments

    driver.close()