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 | 属性 | 无 | int | HTTP 响应体的最大允许大小(字节)。 |
allowedDomains | 属性 | 无 | []string | 允许访问的域名列表,限制爬虫范围。 |
detectCharset | 属性 | 无 | boolean | 是否启用自动字符集检测功能。 |
disallowedDomains | 属性 | 无 | []string | 禁止访问的域名列表,避免抓取敏感内容。 |
onHtml | 方法 | selector:string, callback:function(element:HTMLElement) | void | 设置HTML元素处理回调函数 |
visit | 方法 | url:string | void | 访问指定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:string | void | 访问指定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:string | string | 获取HTML元素的属性值 |
text | 方法 | [selectors:string...] | string | 获取元素的文本内容,可选择性地排除某些元素 |
absoluteURL | 方法 | url:string | string | 将相对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
})