只抓取现有url列表中的网页

我想从一个网站抓取价格信息,在metastudio中已经编写好的抓取规则,单个页面抓取测试成功。问题是,我想抓取的是一个特定url列表中的所有页面,而不是从页面本身上找线索。有什么办法可以办到这点?

举例:

我想抓的其中一个页面如下:
http://www.sigmaaldrich.com/catalog/product/aldrich/690643?lang=zh&regio...
在metastudio中已经可以成功的抓取到我想要的价格信息(虽然是ajax内容,但是不得不承认这个工具很强大,稍微设置就可以抓取)。

我现在手头有一个url列表,里面是几万个产品的相关页面,所有的url都是差不多的样子,存放在一个txt文件里,每行一个url。试问,有什么办法可以导入这个列表,直接按照列表中的url进行抓取,而不是在每个页面上找线索?初次使用这个工具,不是很熟悉,谢谢大神的指导。

可以构造一个网页

因为免费的在线版用户无法利用API直接生成抓取线索,那么可以先做一个网页,里面全部是url,可以用一个ul,里面每个li都是一个a,构造出这样一个网页后,要么放在本地硬盘,要么放在一个http服务器上。然后为这个网页定义抓取规则,只抓取这些url。

这是一个两层抓取过程,第一层抓取手工做的这个列表页面。多层抓取参考《层级抓取》

谢谢

谢谢解释,我去试试。
我理解了,如果是企业版的话,就可以自己调用较为底层的API来进行一些编程式的抓取,对吧。
能给个企业版的报价吗?
email: xjjius@163.com

新问题

你好,谢谢大神的指导。我自己在免费空间上放了一个网页,网页上的就是按照你说的放上几个链接,然后严格按照操作方法设置了抓取规则,单个测试完全没有问题。结果在用线索进行批量抓取的时候,在DataScrape的浏览器窗口一出现网页,Firefox就崩溃了,难道是版本不兼容的问题?我的Firefox版本号是,19.0.2

DataScraper版本

虽然目前的DataScraper没有与19.0.2配套的版本,但是,崩溃可能不与版本相关。

您是抓取自己制作的网页出现崩溃还是抓取目标网站崩溃?

怎样执行批量抓取?是在DataScraper窗口上选择菜单“提取”后,输入一个数字吗?

抓取自己和目标网站

抓取自己和目标网站都会出现崩溃。是选择“提取”后输入一个数字,然后稍等片刻,只要浏览器窗口里面出现网页内容了,firefox就会报错退出。仔细检查了一下抽取规则,应该是没有问题,完全按照教程一步步设置好的,metastudio里面测试test this, test all 都没有问题。

检查方法

1,在firefox地址栏输入about:crashes,找到那次崩溃,点进去以后,拷屏发给我,我可以看看原因。我的email是fullerhua@gooseeker.com.cn

2,如果可以的话,将您编写的那个HTML发给我看看

3,MetaStudio有可能会遇到崩溃,参看MetaStudio崩溃怎么办,但是,DataScraper已经很久没有发现崩溃了。可以打开Firefox菜单“工具”-〉“附加组件”,将里面没有用的扩展删除,将插件禁用。如果安装的是中国火狐的话,会有大量的没有用的插件。

我用about:crashes找到三

我用about:crashes找到三个关于这次crash的链接,你点进去就可以看到。
http://crash-stats.mozilla.com/report/index/bp-08a8d9b5-352e-4d6b-8b01-b...
http://crash-stats.mozilla.com/report/index/bp-8934e171-3347-46c3-a17e-9...
http://crash-stats.mozilla.com/report/index/bp-77d18589-f8dc-40ea-9430-6...

我编写的那个规则叫SigmaChinese,还有一个全是线索自己做的测试网页是(www.zhihuachemtech.com/test.html)用于抓线索的规则叫SigmaTest

我测试了一遍

我测试了一遍,没有发现崩溃,您是否能够检查一下Firefox安装的插件有哪些,比如,暂时将Flash之类的予以禁用,看看是否会崩溃。

我看了一下崩溃跟踪结果,似乎与本地文件操作有关,以前有没有成功生成过抓取结果?

哪个主题发生崩溃

SigmaTest定义的有点问题,中间那层节点“link”是多余的,应该删除,不然会抓取很多重复信息。

另外,在Clue Editor工作台上,主题名应该是SigmaChinese,这样SigmaTest->SigmaChinese就形成一个两级抓取。

是哪个主题抓取时出现崩溃?

在SigmaTest的Clue

在SigmaTest的Clue Editor上正是SigmaChinese,我如果没有中间那层,直接下面那层就是Clue,会报错。
情况如下:
明明已经把顶层映射成样品复制的li标签,下层是url标签,属性设置成key, clue, url。结果无法绑定a标签的href属性,在@href属性上 点击 右键->线索映射,没有任何信息,按照道理,应该有一个s_clue_0给你选择,但是没有。所以必须在Clue Editor中新建一个clue_1,这时在@href属性上 点击 右键->线索映射 能绑定在s_clue_1上,但是选择clue_1的时候,上面什么信息都没有。反而是在clue_0上自动建立了一个Info线索,Link.url的灰色名字在上面。于是乎,只要我点击schema,就说url必须绑定在Free Format或者data sneppit上。

还有,如果我把中间层加上去,倒是可以顺利绑定,在@href上 点击右键-〉线索映射会出现s_clue_0,可以绑定,但是Info下面什么都没有,并没有自动创建一个Info clue。这个到底是什么bug?

我看到您现在定义的信息结构是正确的

创建Info类线索的时间是在选择clue和url特性时,即使没有做数据映射,Info类线索也创建了,Info类线索不需要做线索映射,因为其线索是在DataScraper抓取网页的时候自动生成。所以,线索映射菜单中就不会有Info类线索。

定义的信息结构,即便只为抓取Info类线索,也要做数据映射(而不是线索映射),否则会报错。

明白了,谢谢。试了

明白了,谢谢。试了一下,诚如你所说,太感谢了。现在可以进行批量抓取了。可是又碰到新问题,就是单个网页上用MetaStudio测试,即使是Ajax内容的价格,也能成功抓取,而到了DataScrape里面进行批量抓取的时候,价格就抓不到了,是我ajax模式设置有问题还是网站本身有防抓取措施?能不能帮忙看看,详细内容发到email里面去了。谢谢。