laravieira/scraping

简单的网络爬虫框架,基于Curl和str*函数。

dev-main 2023-08-31 16:53 UTC

This package is auto-updated.

Last update: 2024-09-30 01:17:45 UTC


README

简单的网络爬虫框架,基于Curl和str*函数。需要PHP ^8.0(可以轻松降级到PHP 7)

你能做什么?

有一些函数可以简化你的脚本,如下所示

全局函数

  • upname => 格式化并返回字符串到命名格式(每个单词的首个字符大写)
  • price => 返回类型为 'xx$: 9.999,99' 的价格字符串的浮点值
  • accents => 替换重音符号为等效字符
  • strmstr => 返回 start3 之后、start2 之后、start1 之后的字符串
  • strpart => 返回 start 和 end 之间的中间字符串
  • strmpart => 返回 start1 之后、start2 之后的字符串,其中 start2 在 start1 之后

爬虫对象

如何使用?

upname

upname(string $text);

只需将 text 字符串作为参数传递以进行格式化,结果将是格式化后的字符串。以下是一些示例,每个块的注释表示输出

示例

echo upname('lara vieira');
// 'Lara Vieira'
echo upname('LARA VIEIRA');
// 'Lara Vieira'
echo upname('LEONARDO DE CÁPRIO');
// 'Leonardo de Cáprio'
echo upname('DON PEDRO II');
// 'Don Pedro II'

price

price(string $text);

只需将 text 字符串作为参数传递以进行格式化,结果将是浮点值。以下是一些示例,每个块的注释表示输出

echo price('US$: 3.567,56');
// 3567.56
echo price('R$: 3.456.234,45');
// 3456234.45
echo price('Price is R$: 234,45');
// 234.45

accents

accents(string $text);

只需将 text 作为参数传递进行格式化,结果将是格式化的字符串。以下是一个示例,注释表示输出

echo accents('Aglomeração, Apóstolo, vô, vó');
// 'Aglomeracao, Apostolo, vo, vo'

strmstr

strmstr(
    string $haystack, 
    string $start1, 
    string $start2, 
    string|null $start3=null
);

此函数返回所有在 start1 字符串之后、start2 字符串之后、start3 字符串之后(如果传递了 start3)的 haystack 字符串,或者所有在 start2 字符串之后、start1 字符串之后的 haystack 字符串。返回值将包括最后一个传递的起始字符串,如 strstr

此函数类似于一系列的 strstr 函数

strstr(strstr(strstr(haystack, start1), start2), start3)

以下是一些示例,每个块的注释表示输出

echo strmstr('ABC ABC ABC', 'C');
// 'C ABC ABC'
echo strmstr('ABC ABC ABC', 'B', 'A');
// 'ABC ABC'
echo strmstr('ABC ABC ABC', 'B', 'B', 'A');
// 'ABC'

strpart

这是一个用于网络爬取的非常喜欢的函数。

strpart(
    string $haystack,
    string|null $start = null,
    string|null $end = null,
    bool $keep_start = false
);

此函数将在 haystack 中返回第一个 start 字符串和第一个 end 字符串(在 start 字符串之后)之间的中间字符串。

  • 如果 start 字符串为空,将返回 haystack 中在第一个 end 字符串出现之前的所有内容。

  • 如果 end 字符串为空,将返回 haystack 中在第一个 start 字符串出现之后的所有内容。

  • 如果将 keep_start 布尔值设置为 true,默认为 false,则函数将按正常方式返回,但包括 start 字符串在返回值的开始处。

以下是一些示例,每个块的注释表示输出

echo strpart('ABC ABC ABC', ' ', ' ');
// 'ABC'
echo strpart('ABC ABC ABC', ' ');
// 'ABC ABC'
echo strpart('ABC ABC ABC', end:' ');
// 'ABC'
echo strpart('ABC ABC ABC', ' ', ' ', true);
// ' ABC'
echo strpart('<h2>Subtitle<h2>', '>', '<');
// 'Subtitle'
echo strpart('<div><div>Content</div></div>', '<div>', '</div>');
// '<div>Content'

strmpart

strmpart(
    string $haystack,
    string $start1,
    string $start2,
    string|null $end = null,
    bool $keep_start = false
);

此函数解决了 strpart 的最后一个示例。

此函数将在 start2 字符串之后(即第一个 start1 字符串之后)和 start2 字符串之后的第一个 end 字符串之间的中间字符串。

  • 如果 end 字符串为空,将返回 haystack 中在第一个 start2 字符串之后、第一个 start1 字符串之后的所有内容。

  • 如果将 keep_start 布尔值设置为 true,默认为 false,则函数将按正常方式返回,但包括 start2 字符串在返回值的开始处。

以下是一些示例,每个块的注释表示输出

echo strmpart('<div><div>Content</div></div>', '<div>', '<div>', '</div>');
// 'Content'
echo strmpart('<div><div>Content</div></div>', '>', '>', '<');
// 'Content'
echo strmpart('<a id="link1"><h2 id="text1">Content</h2></a>', '<h2', 'id="', '"');
// 'text1'