还在用Python爬虫?教你一招,摆脱选择元素位置的烦恼!使用Node.js大杀器,并且无需使用cheerio 库~

这篇具有很好参考价值的文章主要介绍了还在用Python爬虫?教你一招,摆脱选择元素位置的烦恼!使用Node.js大杀器,并且无需使用cheerio 库~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

咱们以豆瓣历史250最佳电影为例。

豆瓣说,>_< 你不要过来啊!

第一步:打开网页源代码

第二步:选择你想要爬虫的元素,右键复制获取JS路径

document.querySelector("#content > div > div.article > ol > li:nth-child(3) > div > div.pic > a > img")

还在用Python爬虫?教你一招,摆脱选择元素位置的烦恼!使用Node.js大杀器,并且无需使用cheerio 库~

第三步:将这个路径复制到代码

//引入模块
const https = require('https')
// 不使用cheerio完成爬虫
const cheerio = require('cheerio') 
const fs = require('fs')
const jsdom = require('jsdom')
const { JSDOM } = jsdom;
//获取页面的html结构
https.get('https://movie.douban.com/top250', function (res) {
    let html = ''
    res.on('data', function (chunk) {
        // console.log(chunk + '');
        html += chunk
    })

    res.on('end', function () {

        const dom = new JSDOM(html)

        var movieElement = dom.window.document.querySelector("#content > div > div.article > ol > li:nth-child(3) > div > div.pic > a > img")
        console.log(movieElement.src)
        
    })
})
// 打印内容 https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2372307693.jpg

咱们这个代码很简单,没写过node.js的同学也很容易看懂。引入包,再执行一个http的get操作拿到整个页面的html。

可以看到咱们的代码并没有用cheerio这个库,而是直接将整个html变成一个dom对象,再对dom对象执行点点点的操作就可以得到我们想要的任意元素。

类似的网页我们都可以这么去爬取,再也不需要使用各种正则,遭遇找不到元素内容的烦恼啦!!!

上完全体代码(爬一页25个电影,并保存到本地文件)文章来源地址https://www.toymoban.com/news/detail-777126.html

//引入模块
const https = require('https')
// 不使用cheerio完成爬虫
const cheerio = require('cheerio') 
const fs = require('fs')
const jsdom = require('jsdom')
const { JSDOM } = jsdom;
//获取页面的html结构
https.get('https://movie.douban.com/top250', function (res) {
    let html = ''
    res.on('data', function (chunk) {
        // console.log(chunk + '');
        html += chunk
    })

    res.on('end', function () {

        const dom = new JSDOM(html)

        // 获取所有的电影元素
        var movieElements = dom.window.document.querySelectorAll("#content > div > div.article > ol > li")
    
        console.log(movieElements.length)
        let allFiles = []
        let id = 0
        movieElements.forEach(function(element) {
            // console.log(element.innerHTML)
            title = element.querySelector("div.item > div.info > div.hd > a > span.title:first-of-type").textContent
            pic = element.querySelector("div.item > div.pic > a > img").src
            star = element.querySelector("div.item > div.info > div.bd > div > span.rating_num").textContent
            console.log({
                id: id,
                title: title,
                pic: pic,
                star: star
            })
            allFiles.push({
                id: id,
                title: title,
                pic: pic,
                star: star 
            })
            id += 1
        });

        //将数据写入文件中
        fs.writeFile('./files.json', JSON.stringify(allFiles), function (err, data) {
            if (err) {
                throw err
            }
            console.log('文件保存成功');
        })
    })
})

到了这里,关于还在用Python爬虫?教你一招,摆脱选择元素位置的烦恼!使用Node.js大杀器,并且无需使用cheerio 库~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VSCODE下载太慢(教你一招解决)

    Visual studio code下载太慢大多数是因为VSCODE官网服务器跟我们国内的链接速度有关,下面教大家一招解决下载过慢问题。 解决办法很简单就是替换掉下载域名,例如我们在VSCODE官网上的链接如下: VSCODE下载太慢(教你一招解决) 我们将其中截图的域名替换成 例如图片上的地址

    2024年02月08日
    浏览(50)
  • 教你一招,测试人员如何通过AI提高工作效率!

    伴随着AI技术的兴起,像OpenAI推出的ChatGPT、Microsoft发布的Microsoft 365 Copilot、阿里的通义千问、百度的文心一言、华为的盘古大模型等。很多测试人员开始担心,岗位是否会被AI取代?其实取代你的不是AI,而是会使用AI的测试人!   在工作中,测试人员怎么利用AI提高自己的工

    2024年02月11日
    浏览(50)
  • 教你一招搞定麒麟系统的文件共享和打印

    我们以银河麒麟系统V10-2101为例,进行文件共享。 首先选中要共享的目录,鼠标右键“共享选项”,选择共享选项,如图所示。 勾选“共享此文件夹”即可将此目录共享出去。 麒麟系统的文件共享就是这么朴实无华,有兴趣的小伙伴赶紧去尝试一下吧。 方法1:可点击文件管

    2024年02月08日
    浏览(51)
  • 动态gif如何制作?教你一招简单的方法

    当下是一个高度视觉化的社会,动态图片已经成为了一种流行的表达方式,能在短时间内快速吸引大众的眼球,增加趣味性。但是,这些gif格式的动态图片是如何制作的呢?接下来,就给大家分享gif图片制作(https://www.gif.cn/)工具,无需下载软件,上传视频轻松一键就能快速

    2024年02月08日
    浏览(48)
  • 苹果手机没有密码怎么恢复出厂设置 ?教你一招搞定

    假设iPhone仍然可用,我们都知道如何将iPhone恢复到出厂设置。如果它被禁用或密码被锁定怎么办?如果是这样,您将无法访问设置,iTunes也无法成功连接。别担心,在这里,我们将指导您 苹果手机没有密码怎么恢复出厂设置 ?   据我所知,许多iOS用户更愿意使用设置或iTu

    2024年02月12日
    浏览(44)
  • MySQL数据库忘记密码怎么办?教你一招

    文章目录 1.以管理员身份打开cmd,关闭Mysql服务 2. 跳过密码授权登录  3.再继续以管理员身份打开一个cmd窗口,进行重置密码  4.使用新密码重新登录mysql验证  5.使用Navicat可视化工具连接Mysql Mysql数据库之前安装好了,但是突然忘记当初自己设置的登录密码了,导致使用Navi

    2024年02月04日
    浏览(49)
  • 如何保障地铁站运营安全?预警设备故障,教你一招

    大家都知道轨道交通的实效要求是特别的高一旦发生意外轻则是影响整个交通网络的时间调度,重则会引发严重的交通意外。   因此,不管是列车还是轨道机房都需要一个稳定的运行环境来保障我们的轨道交通的整体效率和安全。 物联网云盒监控平台帮助运维管理人员实时

    2024年02月16日
    浏览(48)
  • 你们还在担心手机找不到?教你一招轻松搞定

    大家有时候会不会因为出门太急而找不到手机,其实我们只需要大喊一声,不管手机藏在哪个角落,我们都能听到手机的回应。 如果你用的是苹果手机,打开【设置】-【Siri与搜索】,开启【用“嘿Siri”唤醒】功能,然后说出“嘿Siri”,即可得到手机自动回答。 如果你是华

    2024年02月11日
    浏览(49)
  • 手机怎么把照片调整成二寸?教你一招轻松修改尺寸

    怎么使用手机把照片的尺寸修改成二寸呢?随着科技的发展,现在的生活已经越来越便捷。我们不仅可以随时随地通过手机拍照,还可以通过手机应用程序进行照片处理。在日常生活中,我们经常需要提交一些证件,如身份证、驾驶证等,这些证件照片的尺寸都是两寸。那么

    2024年02月11日
    浏览(35)
  • 模型训练遇到数据量太大而导致内存不够问题?今天教你一招

    在比赛和工作中,我们经常会遇到数据量太大而导致内存不够的问题。这里可以细分为两种情况: 情况1:数据太大,无法加载到内存; 情况2:加载数据但训练时内存不够; 针对情况1可以考虑使用 Spark 或者 Dask 来逐步完成计算。对于情况2,则需要考虑从模型的角度入手。

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包