JS基于浏览器的爬虫 - 注入Frame标签爬取二手车数据

10 篇文章 8 订阅
6 篇文章 0 订阅

一提到爬虫,大家可能会想到 Python,其完善的第三方库,使得一个刚入门的新手也可以写出一套套完整的爬虫程序,与此同时呢,网站的反爬虫措施也愈加强大。此次,我们另辟蹊径,使用 Javascript 来实现一种另类的爬虫!

简介

js 浏览器爬虫本质上就是通过 Javascript 操作 DOM对象来获取浏览器上的数据,相比 Python这类后端爬虫有着自己独特的优势:

  • 方便分享 / 使用,只用把 JS 代码复制到浏览器即可
  • 跑在客户端,几乎可以无视网站的反爬措施
  • jQuery毫无疑问是最强悍的 HTML 解析工具
  • 通过浏览器开发者工具轻松编写代码

提取某二手车标题

提取单页数据

打开浏览器开发者工具,通过 Chrome 自带的选择器选中标题,并复制 JS path
在这里插入图片描述
切换到 Console 选项卡,输入上一步复制的 JS path,并在结尾处补充 .innerText 即可成功获取到本条商品的标题

在这里插入图片描述
改进我们的代码,增加一个循环,以获取当前页面所有的标题
在这里插入图片描述

提取多页数据

思路:
1. 提取当前页数据
2. 点击下一页按钮

于是,便有下了下面的代码:

// 循环3次, 预计提取3页
for (var p = 0; p <= 2; p++) {
    // 当前页数据
    for (var i = 1; i <= 40; i++) {
        console.log(document.querySelector("body > div.list-wrap.js-post > ul > li:nth-child(" + i + ") > a > h2").innerText)
    }
    // 点击下一页按钮
    document.querySelector("body > div.list-wrap.js-post > div.pageBox > ul > li:nth-child(10) > a").click()
}

拷贝到浏览器控制台,数据打印成功,按钮点击成功,页面跳转成功,但是当我们跳转到下一页后,脚本却不在执行了!

因为在控制台中输入的代码仅作用于当前页面,当我们跳转下一页后,脚本也失效了。

此时我们借助 iframe 标签来实现多页的功能

with (document) {
    write('<iframe width="100%" height="100%" src="'+window.location.href+'"></iframe>');
    void (close())
}

最终的代码如下:

// 注入 frame
with (document) {
    write('<iframe width="100%" height="100%" src="'+window.location.href+'"></iframe>');
    void (close())
}
function show_data() {
    // 先切换到 frame 标签中再寻找元素

    // 当前页链接
    console.log(parent.frames[0].document.URL);
    // 当前页数据
    $(parent.frames[0].document).find('.car-a').each(function(){console.log($(this).attr('title'))});
    // 点击下一页按钮
    $(parent.frames[0].document).find('.next')[0].click();
}

// 启用定时器, 每隔2秒爬取一页
spiderTimer = setInterval(show_data, 2000);

效果如下:
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值