Office中国论坛/Access中国论坛

标题: 如何一次采集网页上所有的表 [打印本页]

作者: 123shusheng    时间: 2016-11-28 15:01
标题: 如何一次采集网页上所有的表
请大神帮我看看这段代码,这是我在网上收集的一个网页数据采集的例子。它设的条件是网页上表的第一列第一行为“产品名称”,而我需要采集的网页上有几个表,但第一列第一行的内容相同,所以只能采集第一个表,我想把条件改为第一行的最后一列的内容在区分,或者一次将网页上的表全部采集到excl表上,再处理。请大神帮我改改,谢谢!
作者: tmtony    时间: 2016-11-28 15:31
网抓 的话要根据 具体 的网页内容 去修改。不太灵活
如果内容固定的话,可考虑使用火车头这样的通用采集软件,数据可直接采集到Access数据库里
作者: 123shusheng    时间: 2016-11-28 15:34
本帖最后由 123shusheng 于 2016-11-28 15:37 编辑
tmtony 发表于 2016-11-28 15:31
网抓 的话要根据 具体 的网页内容 去修改。不太灵活
如果内容固定的话,可考虑使用火车头这样的通用采集软 ...

火车头?能给个例子吗?我的网页上的几个表,表头是固定的,关键是如果直接套例子,每个表的第一列第一行都是一样的。


作者: roych    时间: 2016-11-28 21:40
同一页多个表格的话,一般可以使用DOM进行处理。
如果table有ID,可以通过GetElementById,如果没有则通过getElementsByClassName或者GetElementByTagName来获取表格。后者得到的是一个集合,因此需要通过索引值,才可以判断哪个表是目标表。
DOM涉及的内容较多,建议花些时间了解下HTML代码再来看这个问题。以下例子供参考:
http://www.office-cn.net/thread-119111-1-1.html
http://www.office-cn.net/thread-119204-1-1.html

另外也可以通过Ajax方式或者对JSON数据的解析来获取数据,详细参考以下例子:
http://www.office-cn.net/thread-119593-1-1.html
需要注意的是,通过Ajax方式获取数据时,当HTTP请求过于频繁时可能会被服务器拒绝。网上说加上随机值,可以避免这个错误。但实际测试结果并非如此,可能需要使用代理服务器或者IP转换之类的工具。
作者: fan0217    时间: 2016-11-29 22:25
复杂的要用正则了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3