JS采集教程:人民网滚动新闻
一些网页是通过JS加载的,这样的网页,我们直接查看网页代码是看不到我们想要的内容的,这样的网页应该怎么采集呢?
我们今天要采集的是人民网滚动新闻频道:http://news.people.com.cn/
一,列表采集规则
首先,我们使用谷歌chrome浏览器打开这个网页。

点击网页,打开网页后,如上图,我们可以看得到,网页内容是通过JS后加载的。右键选择“查看网页源代码”,我们还是无法找到我们想要的网址和标题。怎么办呢?
下面,我们开始出大招了。

键盘上单击功能键“F12”,打开谷歌开发者工具,然后先后在开发者工具中选中“Network”和“XHR”,如上图。

再在键盘上单击功能链“F5”刷新网页,这时会看到如图所示的链接。

再点击上面的链接,并选择"Response",这时,下面会出现一长串的代码,如果我们把这些代码复制到记事本中,会清楚地看到,这里面就是我们想要的内容——很多的内容ID、标题和网址。如上图。
然后,我们再右键点击左边的网址(上图中蓝色的部分),然后依次选择“Copy”-->“Copy link address”,这时就可以将我们想要的网址复制出来了。

接下来我们打开采集器并新建一个采集任务。如上图,在弹出的配置采集任务对话框中,将我们刚刚复制出来的网址填入“列表网址”栏中,并填上“任务名”(注意:必须是字母或者汉字开头)
再用谷歌chrome浏览器打开刚才我们所得到的网址,这时我们会看到整个网页就是一长串Json数据。我们复制其中的任意一串包含有title和url的数据,比如:
"title":"鑻规灉灏扁€滈檷閫熼棬鈥濊禂鍋跨編鍥界敤鎴�5浜跨編鍏�","url":"http://world.people.com.cn/n1/2020/0304/c1002-31616245.html"
然后回到采集器中,在“网址拼接”栏中单击,并填入弹出的网址拼接对话框的“内容选取”对话框中。

如图,我们用<*>分别替换title和url中的标题和网址,并依照对应的序号,分别在“标题拼接”和“网址拼接”对话框中输入<0>和<1>。

再点击“提交”和“退出”,就可以提交到主窗口的“网址拼接”对话框中并退出了。

这时我们点击“采集测试”按钮,在弹出对话框中选择“列表页”-->“开始”,稍等一下,就可以采集到我们想要的标题和网址了。
二,内容采集规则
首先,我们在“内容采集规则”选项卡左侧的标签列表中右键并新建“标题”、“内容”、“时间”、“作者”、“关键词”、“class”、“来源”和“网址”等标签。
然后,我们随便选择一条刚刚在采集测试中所得到的网址,并使用谷歌chrome浏览器打开。
1,标题
网页打开后,我们在网页上右键,选择“查看网页源代码”,这时,我们可以看到网页源代码的第7行就是网页的标题,一串用<title>开头和</title>结属的字符串儿。
下面,我们选中刚刚新建好的“标题”标签,并在对话框中依次选择或填写下面的内容:
数据来源:从网页中获取
采集模式:xpath
采集规则://title

填好后的效果如上图。
2,内容

再回到chrome上的内容源代码中,我们可以看到,网页正文前面有一串代码。如上图,第二行的<div class="box_pic"></div>由于是一对闭合的div标签,所以可以忽略,所以我们选择可以将正文内容包含内在的前段一行代码:<div class="box_con" id="rwb_zw">,所以我们在采集器的“内容”标签中这样选择和填写:
数据来源:从网页中获取
采集模式:xpath
采集规则://div[@id="rwb_zw"]

如上图,就是填写后的效果。
3,时间

“时间”标签我们这样填写。
4,作者

注意:作者标签中所填写的用户名之间,需用半角逗号隔开。并且,这些用户名必须是网站后台真实存在的的哦,不然有可能会发布不成功。
5,关键词

注意:a,数据来源选择“标签组合”时,采集规则输入框中的标签需用“+”隔开;b,这里只填写“标题”也可以,由于“标题+内容”中的数据较长,运行效率和准确度可能会受影响。
过滤规则里面,我们右键选择“添加”-->“抽取热词”
6,class

7,来源

8,网址

全部填好后,点击保存。
三,采集测试和数据处理
全部填写完成后,就可以进行采集测试了。
这时,一定要注意:内容页采集规则填好之后,在进行采集测试之前,一定记着保存哦。

单击“采集测试”,选择“内容页”,并输入一条网址,单击开始,稍等一下,可得到如上图的采集结果。
通过上图,我们可以看到,我们所有的内容都采集到了,但标题和内容中还有部分不需要的代码需要去除。
1,标题
打开“标题”标签,在过滤规则中右键-->添加-->字符替换,添加一条字符替换规则。
a,在前字符串中,我们填写<<*>>,右边留空,可以去除标题中所有的<>括号和括号中的内容;
b,在前字符串中,我们填写-<*>$,右边留空,可以去除标题中以-开头,一直到结属的所有的内容;
需要在前字符串中填写多个规则中,需要在各规则之间用|隔开,所以将以上两条规则合二为一时,需要将前字符串写成:<<*>>|-<*>$
2,内容
打开“内容”标签,在过滤规则中右键-->添加-->标签过滤,添加一条标签过滤规则,并选中table、div和center标签,用于过滤内容中所有的table、div和center标签。
再添加一条字符替换规则,前字符串填写\s+,后字符串单击输入一个空格,用于去除文章中多除的空格。(注意:后字符串输入一个空格的目的,是因为img和a标签及英文中的空格不可以去除,所以必须保留一个空格。)
3,采集测试并修正

填写完成后,点击保存并再次进行内容采集测试,这时,我们可以看到如图所示的内容。
在这里,我们可以看到,内容标签中还有一对tr标答没去除干净,且后面的(责编:曹昆、岳弘彬)我们也不想要,所以再次修正。
我们将内容标签中“过滤规则”-->“字符替换”的前字符串修改为\s+|<tr<*>$,后字符串还是保存一个空格。

保存后再次测试,这时我们所获取到的内容就非常的干净了。
四,循环采集并发布

本地分类采集/分类发布的填写方法如上图所示:


这是帝国cms的本地发布接口

把任务基本设置中的“循环采集”勾选了,保存并退出。

最后,回到主界面,单击“开始”按钮,采集任务就可以24小时不间断采集了。

网站公告: