python web抓取:onclick ajax请求返回没有状态200

问题描述:

我想从网站刮表数据。我想要的数据是隐藏在onclick事件的后面。python web抓取:onclick ajax请求返回没有状态200

<a class="text" onclick="javascript:openPAOnSR_RS('some_sku', 'brandname','divId', 'some_args','OPC Page Details');cmTagAndLink('Open Link','OPC Page Details',null,null,null);">The Click</a> 

点击后,有一个帖子请求和下面的一些细节。

Request URL:http://www.somewebsite.com/catalog/tables.do?some_sku=sku&brandKey=brandname&divId=divId 
Request Method:POST 
Status Code:200 OK 
Remote Address:23.xxxxxxxxxxx 
Referrer Policy:no-referrer-when-downgrade 

所以我写了下面的代码,但它没有返回任何东西。

from urllib.parse import urlencode 
from requests.exceptions import RequestException 
import requests 


def get_page_index(): 
    string_param = { 
     'some_sku': 'sku', 
     'brandKey': 'brandname', 
     'divId': 'divId' 
    } 

    url = "http://www.somewebsite.com/catalog/tables.do?" + urlencode(string_param) 
    try: 
     response = requests.post(url=url, data=string_param) 
     if response.status_code == 200: 
      print(response.url, response.content) 
      return response.text 
     return None 
    except RequestException as e: 
     print(e) 

我没有输出,状态显示200.我应该如何获取点击事件后面的数据?

+0

你能解释什么时候发生onclick事件吗?我知道你要求一个网站,然后你做点击,然后出现一个'JS'对话框,并在'JS'框后面提供你的数据;我对吗? –

+0

是的,这是正确的。所以我有这个网页我试图刮,并有一个onclick链接,将启动一个JS对话框。我知道我可以从JS框中提取数据,但是如何执行“单击”来启动JS对话框?问题是我有多个类似结构的网页,我试图从中提取信息。我想写一个可以做鼠标点击的抓取脚本。 –

urllib只会对你与html内容,所以你不能与网站上的JS的东西干扰,有模块,如robobrowserscrapy但他们只点击html复选框或按钮。
所以其他选择与更好是。

1)Selenium通过使用使用Phantom的无头浏览器。

2)使用Scrapy + splash

我能问什么步骤后,你点击该按钮之前在做什么?
你是否在放置一些信息后点击按钮。或者您只是在网站出现时点击按钮?