python web scraping:onclick ajax request返回状态为200的内容

时间:2017-08-31 23:44:29

标签: python web-crawler python-requests

我正试图从网站上抓取一个表格数据。我想要的数据是“隐藏”在onclick事件后面。

<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.如何在点击事件中“获取”后面的数据?

1 个答案:

答案 0 :(得分:0)

urllib只会回复您html内容,因此您无法干扰该网站上的JS内容,有robobrowserscrapy等模块但他们只点击html复选框或按钮 所以其他选择更可取。

1)Selenium使用无头浏览器Phantom

2)使用Scrapy + splash

我可以问你在点击按钮之前做了什么步骤吗? 你放一些信息后点击按钮了吗?或者您只是在网站出现时点击按钮?