2016-10-27 18 views
0

我需要从有两个元素的形式python3程序刮了一个网站(比如“www.example.com”)如下:使用Python3从JS刮数据生成的内容

1: Textbox 
2: Dropdown 

需要运行具有多个选项的查询(例如'abc'和'1')以在上面的表格中填充/选择并且刮取由此产生的页面。填写表单并提交后生成的页面在浏览器中显示为“www.example.com/abc/1”。本页面的结果通过javacript获取,可以在页面源中查看。

<script type="text/rfetchscript"> 
$(document).ready(function(){ 
$.ajax({ 
url: "http://clients.example.com/api/search", 
data: JSON.parse('{"textname":"abc", "dropval":"1"}'), 
method: 'POST', 
dataType: 'json', 
     Logic to fetch the data 
</script> 

我曾尝试用请求的方法,urllib的获得页面的结果:

1: RESP = requests.get( 'http://www.example.com/abc/1')

下面的相关的JavaScript简介

2: REQ = urllib.request.Request( 'http://www.example.com/abc/1') X = urllib.request.urlopen(REQ)
源码= x.read()

3:也试过scrapy。

但是,以上所有仅返回“查看页面源”中所见的静态数据,而不是浏览器中可以看到的实际结果。

在此处寻找正确方法的帮助。

回答

0

使用urllib或请求来刮页面只会返回页面源,因为它不能执行服务器返回的javascript代码等。如果您想要像浏览器一样加载内容,则必须使用带有可选chrome或firefox驱动程序的selenium。如果您想继续使用urllib或要求您必须查找该网站加载的内容页面,例如chrome浏览器中的网络选项卡。可能您感兴趣的数据是从json文件加载的。