首页 > 其他分享 >爬虫JS逆向其实挺简单

爬虫JS逆向其实挺简单

时间:2023-05-06 10:02:45浏览次数:30  
标签:逆向 const 登录 cheerio driver 爬虫 JS 模拟

JS逆向爬虫是指通过分析网站的JavaScript代码,模拟浏览器行为,从而获取网站数据的一种方式。下面是一个JS逆向爬虫的案例:

1、分析目标网站的JavaScript代码,找到数据请求的URL和参数。

2、使用Python的Requests库发送模拟的HTTP请求,携带必要的参数。

3、解析返回的数据,提取需要的信息。

4、如果需要模拟登录,可以使用Selenium模拟浏览器登录,然后再进行数据爬取。

例如,假设有一个网站需要登录才能查看数据,可以使用以下代码进行模拟登录并获取数据:

 

import requests
from selenium import webdriver

# 模拟登录
driver = webdriver.Chrome()
driver.get("https://example.com/login")
username_input = driver.find_element_by_name("username")
password_input = driver.find_element_by_name("password")
submit_button = driver.find_element_by_xpath("//button[contains(text(), 'Login')]")
username_input.send_keys("myusername")
password_input.send_keys("mypassword")
submit_button.click()

# 爬取数据
response = requests.get("https://example.com/data", cookies=driver.get_cookies())
data = response.json()

其中,Selenium模拟登录后获取的cookie可以通过driver.get_cookies()方法获取,然后传递给Requests库发送数据请求。返回的数据可以通过解析JSON格式的响应进行提取。

例如:

以下是一个使用 Node.js 和 Request 库编写的简单的网页爬虫代码,爬取指定网页的标题和文章内容:

 

const request = require('request');
const cheerio = require('cheerio');

const url = 'https://www.example.com'; // 指定要爬取的网页地址

request(url, (error, response, body) => {
  if (!error && response.statusCode === 200) {
    const $ = cheerio.load(body); // 使用 cheerio 将 HTML 解析为 DOM 对象

    const title = $('title').text(); // 获取网页标题
    console.log(`网页标题:${title}`);

    const article = $('article').text(); // 获取文章内容
    console.log(`文章内容:${article}`);
  } else {
    console.error(error);
  }
});

另外,需要注意的是,爬虫行为可能会违反网站的使用协议和法律法规,建议在使用之前先了解相关规定并获得网站的授权。

标签:逆向,const,登录,cheerio,driver,爬虫,JS,模拟
From: https://www.cnblogs.com/q-q56731526/p/17376086.html

相关文章

  • 关于docker的/etc/docker/key.json文件说明
    对于刚安装完docker,是没有/etc/docker/key.json这个文件的,也不会有/etc/docker/目录 但是当我们启动或者重启docker后,就会自动创建上面的目录,以及生成/etc/docker/key.json文件[root@qq-5201351~]#systemctlrestartdocker关于/etc/docker/key.json这个文件,有如下几......
  • Python多线程爬虫简单模板
    多线程爬虫的流程可以大致分为:(1)获取种子URL:从初始URL中抓取起始页面,解析其中的URL,并将这些URL添加到未访问的URL队列中;(2)解析下载的网页:从URL队列中取出一个URL,下载其内容,解析其中的链接,并把新的链接放入未访问的URL队列中;(3)存储爬取的数据:从URL队列中取出未访问的URL,把其中的内......
  • Three.js 进阶之旅:页面平滑滚动-王国之泪
    声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要浏览网页时,常被一些基于鼠标滚轮控制的页面动画所惊艳到,比如greensock官网这些showcase案例页面就非常优秀,它们大多数都是使用Tween.js、gasp......
  • 用 VSCode 调试网页的 JS 代码有多香
    用VSCode调试网页的JS代码有多香Javascript代码主要有两个运行环境,一个是Node.js,一个是浏览器。一般来说,调试Node.js上跑的JS代码我会用VSCode的debugger,调试浏览器上的JS代码我会用chromedevtools。 相比纯看代码来说,我更推荐结合debugger来看,它可以让......
  • Cesium中的Globe.js
    Globe顾名思义就是地球的意思吧。先看构造函数:functionGlobe(ellipsoid){ellipsoid=defaultValue(ellipsoid,Ellipsoid.WGS84);varterrainProvider=newEllipsoidTerrainProvider({ellipsoid:ellipsoid,});varimageryLayerCollection=newImagery......
  • 常用的截取字符串方法JS和Golang实现
    JS中截取字符串很简单,直接使用substr函数substr()方法可在字符串中截取从开始下标开始的指定数目的字符。下标是从0开始算例如:"21".substr(0,1)  返回2golang实现的substr//截取字符串,支持多字节字符//start:起始下标,负数从从尾部开始,最后一个为-1//length:截取长度,......
  • Vue进阶(七十八):Vue 定时器与 JS 定时器
    (文章目录)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">一、Vue定时器在vue中,有两种定时器,一是浏览器API,window对象上的;另一种就是vue/nodejs封装的,需要引入。import{setInterval,clearInterval}from'timers'建议使用window对象自带......
  • JSONP跨域的原理解析
    JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。 JavaScript这......
  • 浅谈一下对于 js 中的 this 的理解
    浅谈一下对于js中的this的理解对于this值的定义:简单来说this是一个对象,这个对象具体的值是什么,取决于运行时的环境,即代码执行时的环境。MDN:当前执行上下文(global、function或eval)的一个属性,在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。......
  • 认识网页结构和爬虫
    网页一般由三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)和JScript(活动脚本语言)HTMLHTML是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于HTML的标签,并且标签都是成对出现的。常见的标签如下:<html>..</html>表示标记中间的元素是网页<body......