juanparati / phpscraper
PHP爬虫
1.1
2019-11-17 19:50 UTC
Requires
- ext-dom: *
- ext-json: *
- amphp/amp: ^2.3
- amphp/artax: ^3.0
- league/climate: ^3.5
- symfony/dom-crawler: ^4.3
- symfony/yaml: ^4.3
This package is auto-updated.
Last update: 2024-09-18 07:07:37 UTC
README
1. 这是啥?
一个用于从网页中提取和格式化内容的命令行工具。适用于提取如
- 产品目录
- 评论
- 列表
- 等
输出格式为 JSON lines。
2. 它是如何工作的?
-
创建一个爬虫收据(参见 recipes)
-
类型
phpscraper config url
以下示例将从亚马逊提取所有带有用户名、评论和评分的评论
phpscraper recipes/amazon.yml https://www.amazon.de/product-reviews/B000J34HN4/ref=acr_dpx_hist_3?ie=UTF8
要查看更多选项,请输入
phpscraper --help
3. 食谱
食谱是YML文件,以结构化方式描述如何从页面中提取内容。食谱使用XPath路由来指示哪些元素将被提取。
以下是一个从亚马逊评论中提取评论的食谱示例
project: "Amazon reviews extractor"
pagination:
next_xpath: "//li[@class='a-last']/a/@href"
extraction:
product:
xpath: "//h1/a[@class='a-link-normal']"
extract_as: "product"
in_memory: true
comments:
xpath: "//div[@class='a-section celwidget']"
subelements:
product:
from_memory: "product"
extract_as: "product"
name:
xpath: "//span[@class='a-profile-name']"
extract_as: "name"
rate:
xpath: "//i[contains(@class, 'a-icon-star')]/span"
extract_as: "rating"
extract_regex: "/^.{0,3}/"
cast_as: float
comment:
xpath: "//span[@class='a-size-base review-text review-text-content']"
extract_as: "comment"
verified:
xpath: "//span[@class='a-size-mini a-color-state a-text-bold']"
extract_as: "verified"
cast_as: boolean
3.1 分页部分
它定义了“下一页”按钮的位置。如果找不到该元素,则爬虫将完成当前页面的提取过程。
3.2 提取部分
它定义了将要提取的元素。它使用级联结构,因此可以定义父元素和子元素。
提取部分的可能指令有
- xpath: 使用XPath表达式定义要提取的元素。如果存在父元素,则表达式将自动相对于父元素。
- subelements: 定义子元素。
- extract_as: 这总是必需的,并设置要提取的元素的字段名。
- extract_regex: 用于提取内容的正则表达式。
- cast_as: 将提取的数据转换为类型,以便JSON输出反映正确的数据类型。可能的转换类型为“布尔值”、“整数”、“浮点数”和“字符串”
- in_memory: 当我们想在内存中临时保存时使用,例如在另一个提取线程中使用。
5. 安装
PHPscraper可以通过不同的方式安装
A) 从Github下载最新构建或B) 只需输入 "composer global require juanparati/phpscraper"
5. 如何构建自己的包
-
下载Caveman(Mamuph辅助工具)
-
克隆此项目
-
在项目目录中输入
caveman build . -x -r