我正在尝试从以下页面中提取数据:
其中,方便且低效,包括作为头文件中嵌入的csv文件的所有数据,设置为名为gs_csv的变量。
如何提取这个? Document.body.innerhtml
跳过数据所在的标题,包含标题的替代方法是什么(或者更好的是与gs_csv
相关联的值)?
(对不起,对这一切都是新的,我一直在搜索大量的文档,并尝试了很多文档,但到目前为止还没有任何工作)。
感谢Sinan(这主要是他的解决方案转录为Python)。
import win32com.client
import time
import os
import os.path
ie = Dispatch("InternetExplorer.Application")
ie.Visible=False
ie.Navigate("http://www.bmreports.com/servlet/com.logica.neta.bwp_PanBMDataServlet?param1=¶m2=¶m3=¶m4=¶m5=2009-04-22¶m6=37#")
time.sleep(20)
webpage=ie.document.body.innerHTML
s1=ie.document.scripts(1).text
s1=s1[s1.find("gs_csv")+8:-11]
scriptfilepath="c:\FO Share\bmreports\script.txt"
scriptfile = open(scriptfilepath, 'wb')
scriptfile.write(s1.replace('\n','\n'))
scriptfile.close()
ie.quit
答案 0 :(得分:1)
未经测试:您是否尝试查看Document.scripts包含的内容?
<强>更新强>
出于某种原因,我在使用Windows Scripting Host工作时遇到了极大的困难(但是,我不经常使用它,道歉)。无论如何,这是有效的Perl源:
use strict;
use warnings;
use Win32::OLE;
$Win32::OLE::Warn = 3;
my $ie = get_ie();
$ie->{Visible} = 1;
$ie->Navigate(
'http://www.bmreports.com/servlet/com.logica.neta.bwp_PanBMDataServlet?'
.'param1=¶m2=¶m3=¶m4=¶m5=2009-04-22¶m6=37#'
);
sleep 1 until is_ready( $ie );
my $scripts = $ie->Document->{scripts};
for my $script (in $scripts ) {
print $script->text;
}
sub is_ready { $_[0]->{ReadyState} == 4 }
sub get_ie {
Win32::OLE->new('InternetExplorer.Application',
sub { $_[0] and $_[0]->Quit },
);
}
__END__
C:\Temp> ie > output
output
现在包含脚本标记内的所有内容。
答案 1 :(得分:0)
使用ajax获取该页面的源代码,并使用jquery解析响应文本,如XML。应该简单地获取在
中遇到的第一个标签的文本我与jquery没有联系,或者我会发布代码示例。
编辑:我假设您正在谈论在客户端获取csv。
答案 2 :(得分:0)
如果这只是一次性脚本,那么将这个csv数据提取出来就像这样简单:
import urllib2
response = urllib2.urlopen('http://www.bmreports.com/foo?bar?')
html = response.read()
csv = data.split('gs_csv=')[1].split('</SCRIPT>')[0]
#process csv data here
答案 3 :(得分:0)
感谢Sinan(这主要是他的解决方案转录为Python)。
导入win32com.client
导入时间导入操作系统
导入os.path
ie = Dispatch(“InternetExplorer.Application”)ie.Visible = False
ie.Navigate( “http://www.bmreports.com/servlet/com.logica.neta.bwp_PanBMDataServlet?param1=¶m2=¶m3=¶m4=¶m5=2009-04-22¶m6=37#”)
time.sleep(20)
网页= ie.document.body.innerHTML
s1 = ie.document.scripts(1).text s1 = s1 [s1.find(“gs_csv”)+ 8:-11]
scriptfilepath =“c:\ FO Share \ bmreports \ script.txt”
scriptfile = open(scriptfilepath,'wb')
scriptfile.write(s1.replace('\ n','\ n'))
scriptfile.close()
ie.quit