colly

colly

colly模块是一个网络爬虫程序。

Collector 类

Collector类是一个网络爬虫类,用于对网页进行爬取。

导入

import {Collector} from "colly"

使用

let collector = new Collector()

属性与方法

属性与方法

名称类型参数返回值说明
maxDepth属性int爬虫的最大深度,控制递归爬取的层数。
async属性boolean是否启用异步模式,提升爬取效率。
cacheDir属性string缓存目录路径,用于保存临时数据。
userAgent属性string设置 HTTP 请求的 User-Agent 信息。
maxBodySize属性intHTTP 响应体的最大允许大小(字节)。
allowedDomains属性[]string允许访问的域名列表,限制爬虫范围。
detectCharset属性boolean是否启用自动字符集检测功能。
disallowedDomains属性[]string禁止访问的域名列表,避免抓取敏感内容。
onHtml方法selector:string, callback:function(element:HTMLElement)void设置HTML元素处理回调函数
visit方法url:stringvoid访问指定URL
onRequest方法callback:function(request:Request)void设置请求发送前的回调函数
onScraped方法callback:function(response:Response)void设置页面抓取完成后的回调函数
wait方法void等待抓取完成

maxDepth

爬虫的最大深度,控制递归爬取的层数。

语法

collector.maxDepth=10

参数

  • 10: 爬虫的最大深度,控制递归爬取的层数。

返回值

  • int:爬虫的最大深度,控制递归爬取的层数

示例

import {Collector} from "colly"
let collector = new Collector()
collector.maxDepth=10

async

是否启用异步模式,提升爬取效率。

语法

collector.async = true

参数

  • true: 启用异步模式,提升爬取效率。

返回值

  • boolean: 是否启用异步模式,提升爬取效率。

示例

import {Collector} from "colly"
let collector = new Collector()
collector.async = true

cacheDir

缓存目录路径,用于保存临时数据。

语法

collector.cacheDir = "./cache"

参数

  • "./cache": 缓存目录的路径字符串

返回值

  • string: 缓存目录路径

示例

import {Collector} from "colly"
let collector = new Collector()
collector.cacheDir = "./cache"

userAgent

设置 HTTP 请求的 User-Agent 信息。

语法

collector.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

参数

  • userAgent字符串: 自定义的 User-Agent 信息

返回值

  • string: 当前设置的 User-Agent 字符串

示例

import {Collector} from "colly"
let collector = new Collector()
collector.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

maxBodySize

HTTP 响应体的最大允许大小。

语法

collector.maxBodySize = 10485760  // 10MB

参数

  • size: 最大允许大小(字节)

返回值

  • int: 最大响应体大小值

示例

import {Collector} from "colly"
let collector = new Collector()
collector.maxBodySize = 10485760  // 设置为10MB

allowedDomains

允许访问的域名列表,限制爬虫范围。

语法

collector.allowedDomains = ["example.com", "sub.example.com"]

参数

  • domains: 允许访问的域名字符串数组

返回值

  • []string: 允许访问的域名列表

示例

import {Collector} from "colly"
let collector = new Collector()
collector.allowedDomains = ["example.com", "sub.example.com"]

detectCharset

是否启用自动字符集检测功能。

语法

collector.detectCharset = true

参数

  • true/false: 是否启用自动字符集检测

返回值

  • boolean: 是否启用自动字符集检测

示例

import {Collector} from "colly"
let collector = new Collector()
collector.detectCharset = true

disallowedDomains

禁止访问的域名列表,避免抓取敏感内容。

语法

collector.disallowedDomains = ["private.example.com", "internal.example.com"]

参数

  • domains: 禁止访问的域名字符串数组

返回值

  • []string: 禁止访问的域名列表

示例

import {Collector} from "colly"
let collector = new Collector()
collector.disallowedDomains = ["private.example.com", "internal.example.com"]

onHtml

为匹配的HTML元素设置处理回调函数。

语法

collector.onHtml(selector, callback)

参数

  • selector: CSS选择器字符串
  • callback: function(element) 处理匹配元素的回调函数

示例

collector.onHtml("div", (element) => {
    console.log(element.text())
})

visit

访问指定的URL。

语法

collector.visit(url)

参数

  • url: 要访问的网页地址

示例

collector.visit("https://example.com")

onRequest

设置请求发送前的回调函数。

语法

collector.onRequest(callback)

参数

  • callback: function(request) 处理请求的回调函数

示例

collector.onRequest((request) => {
    console.log("Visiting:", request.url)
})

onScraped

设置页面抓取完成后的回调函数。

语法

collector.onScraped(callback)

参数

  • callback: function(response) 页面抓取完成后的回调函数

示例

collector.onScraped((response) => {
    console.log("Finished:", response.url)
})

wait

设置请求间隔等待时间。

语法

collector.wait(duration)

参数

  • duration: 等待时间(毫秒)

示例

collector.wait(1000) // 等待1秒

Request

请求对象,用于表示HTTP请求。

属性与方法

名称类型参数返回值说明
url属性string获取请求的URL
visit方法url:stringvoid访问指定URL

url

获取当前请求的URL。

语法

request.url

返回值

  • string: 请求的URL字符串

示例

collector.onRequest((request) => {
    console.log("Current URL:", request.url)
})

visit

访问指定的URL。

语法

request.visit(url)

参数

  • url: 要访问的网页地址

示例

request.visit("https://example.com")

Response

响应对象,用于表示HTTP响应。

属性与方法

名称类型参数返回值说明
request属性Request获取响应对应的请求对象
body属性string获取响应体内容
statusCode属性int获取HTTP状态码

request

获取响应对应的请求对象。

语法

response.request

返回值

  • Request: 请求对象

示例

collector.onScraped((response) => {
    console.log("Request URL:", response.request.url)
})

body

获取响应体的内容。

语法

response.body

返回值

  • string: 响应体内容

示例

collector.onScraped((response) => {
    console.log("Response body:", response.body)
})

statusCode

获取HTTP响应状态码。

语法

response.statusCode

返回值

  • int: HTTP状态码

示例

collector.onScraped((response) => {
    console.log("Status code:", response.statusCode)
})

HTMLElement

HTML元素对象,用于表示和操作HTML元素。

属性与方法

名称类型参数返回值说明
attr方法attributeName:stringstring获取HTML元素的属性值
text方法[selectors:string...]string获取元素的文本内容,可选择性地排除某些元素
absoluteURL方法url:stringstring将相对URL转换为绝对URL
request属性Request获取当前元素相关的请求对象

attr

获取HTML元素的指定属性值。

语法

element.attr(attributeName)

参数

  • attributeName: 属性名称

返回值

  • string: 属性值

示例

collector.onHtml("a", (element) => {
    console.log(element.attr("href"))  // 输出链接地址
})

text

获取元素的文本内容,可以选择性地排除某些子元素的文本。

语法

element.text([selector1, selector2, ...])

参数

  • selectors: (可选) 要排除的元素选择器,支持标签、css、id选择器

返回值

  • string: 元素的文本内容

示例

collector.onHtml("div", (element) => {
    // 获取所有文本
    console.log(element.text())
    // 获取文本,但排除所有span标签的内容
    console.log(element.text("span"))
})

absoluteURL

将相对URL转换为绝对URL。

语法

element.absoluteURL(url)

参数

  • url: 需要转换的URL字符串

返回值

  • string: 转换后的绝对URL

示例

collector.onHtml("a", (element) => {
    let relativeUrl = element.attr("href")
    let absoluteUrl = element.absoluteURL(relativeUrl)
    console.log(absoluteUrl)
})

request

获取当前元素相关的请求对象。

语法

element.request

返回值

  • Request: 请求对象

示例

collector.onHtml("div", (element) => {
    console.log(element.request.url)  // 输出当前页面的URL
})
更新时间 12/31/2024, 2:18:27 PM