如何克服Javascript的“ onclick”按钮来抓取网页?

我必须按下一个按钮才能读取网页上的资金信息。否则,视图将被阻塞,并且使用刮板外壳始终会导致为空[]。

<div onclick="AgreeClick()" style="width:200px; padding:8px; border:1px black solid; 

background-color:#cccccc; cursor:pointer;">Confirmed</div>

而且AgreeClick的功能是:

function AgreeClick() {

var cookieKey = "ListFundShowDisclaimer";

SetCookie(cookieKey, "true", null);

Get("disclaimerDiv").style.display = "none";

Get("blankDiv").style.display = "none";

Get("screenDiv").style.display = "none";

//Get("contentTable").style.display = "block";

ShowDropDown();

如何克服此onclick =“ AgreeClick()”函数来抓取网页?

回答:

首先,检查所需的数据是否已经存在-在html中(它在背景中-在那里)。

另一种选择是selenium::

from selenium import webdriver

import time

browser = webdriver.Firefox()

browser.get("http://www.prudential.com.hk/PruServlet?module=fund&purpose=searchHistFund&fundCd=MMFU_U")

elem = browser.find_element_by_xpath('//*[@id="disclaimer"]/div/div')

elem.click()

time.sleep(0.2)

elem = browser.find_element_by_xpath("//*")

print elem.get_attribute("outerHTML")

另一种选择是使用mechanize。它无法执行js代码,但是根据源代码,AgreeClick只需将cookie设置为ListFundShowDisclaimer即可true。这是一个起点(不确定是否可行):

import cookielib

import mechanize

br = mechanize.Browser()

cj = cookielib.CookieJar()

ck = cookielib.Cookie(version=0, name='ListFundShowDisclaimer', value='true', port=None, port_specified=False,

domain='www.prudential.com.hk', domain_specified=False, domain_initial_dot=False, path='/',

path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None,

rest={'HttpOnly': None}, rfc2109=False)

cj.set_cookie(ck)

br.set_cookiejar(cj)

br.open("http://www.prudential.com.hk/PruServlet?module=fund&purpose=searchHistFund&fundCd=MMFU_U")

print br.response().read()

然后,你可以使用BeautifulSoup或任何你喜欢的内容解析结果。

以上是 如何克服Javascript的“ onclick”按钮来抓取网页? 的全部内容, 来源链接: utcz.com/qa/422089.html

回到顶部