多语言展示
当前在线:1296今日阅读:19今日分享:20

动态数据、防盗链的网站如何用Excel抓取

用excel的宏代码是可以简单的抓取静态网页的数据的,但是在形形色色的网站中总有些异类,这些网站的数据是通过外部的js文件生成的,而这个js更会是进行过防盗链处理的。以和讯博客为例,网站中我们需要阅读数和评论数,但是静态的网页源代码中并没有显示这两个数据。
工具/原料
1

chrome浏览器

2

Microsoft Excel

方法/步骤
1

首先用chrome登录网页,并且按F12打开开发者工具并刷新页面

2

之后点击开发者工具的“Network”选项卡,再点击“js”选项卡,可以看到很多的js文件,这些都是该网页请求的外部js。

3

依次点击这些JS文件并且查看,会看到预览中有如下这个document.getElementById('articleClickCount').innerHTML = 1409; document.getElementById('articleCommentCount').innerHTML = 6;这就是我们要抓取的阅读数和评论数

4

把这个js的网站新链接提取出来,经过和原来的链接进行对比可以用伪代码写成:新链接 = 'http://click.tool.hexun.com/click.aspx?articleid=' & Split(Split(原始链接, '/')(3), '_')(0) & '&blogid=0'

5

打开excel,再alt+f11打开宏编辑器,在模块中写入如下代码Sub 网页抓取()For Each a In SelectionURL = 'http://click.tool.hexun.com/click.aspx?articleid=' & Split(Split(a, '/')(3), '_')(0) & '&blogid=0'Set xmlhttp = CreateObject('WinHttp.WinHttpRequest.5.1')With xmlhttp.Option(6) = 0'http://www.88ms88.com/Main/Sports/.Open 'GET', URL, False.setRequestHeader 'Referer', a.setRequestHeader 'Connection', 'Keep-alive'.setRequestHeader 'User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'.SENDa.Offset(0, 1) = .responsetextEnd WithSet xmlhttp = NothingNextEnd Sub

6

回到excel界面,在a1单元格中输入网址

7

选择a1单元格,按alt+f8弹出宏,并且运行宏“网页抓取”

8

之后会在B1单元格弹出结果

注意事项
1

防盗链的要点在于设置请求的头文件,.setRequestHeader 'Referer', a ;.setRequestHeader 'Connection', 'Keep-alive' .setRequestHeader 'User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'

2

基础的网页抓取自行搜索,限于篇幅不做过多讲解。

推荐信息