Open sskmtm opened 1 year ago
一个网页有三个url:
1/ 数据库中的 key,也就是 WebPage.url,通常需要经过规范化,可以看 AmazonUrls 类
2/ WebPage.href,指网页中通过a标签提取出来的链接,它表示访问这个链接“应当能”打开目标网页
3/ WebPage.location,表示打开网页后浏览器中最终呈现的地址,它可能是经过跳转的
当你要访问一个网页时,系统内部以 WebPage.url为准,所以你的匹配规则应当匹配该链接,当你收集到一个链接准备采集之前,应当对其进行规范化。
当系统最终将一个网页采集请求发送到浏览器时,它优先使用WebPage.href,它可能带有随机参数,不是那么漂亮,但是它应当代表一个真人网上冲浪时点击一个链接时访问的实际链接。
---Original--- From: @.> Date: Mon, Mar 20, 2023 10:01 AM To: @.>; Cc: @.***>; Subject: [platonai/exotic-amazon] How to match the extraction configurationwhen the web page is redirected (Issue #17)
如果一个网页在获取后发生了重定向,有什么办法可以配置:extract-config.json 中的patttern 匹配 重定向后的 url 呢?
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
在 extract-config.json
文件中配置的所有 rule 都会被解析成 ai.platon.scent.crawl.serialize.config.v1.ExtractRule
。
我想了解的是,在发生 重定向 的时候,ExtractRule 对象的 urlPattern 匹配的文本(url)是否可以自定义(比如,上面你说的location)。
可以重写什么方法做到吗?
一个网页在浏览器中发生重定向,不影响 WebPage.url,只是会将 WebPage.location 设置为最终浏览器中显示的链接。因此不应该出现你上面提及的情况。
你应当在采集该网页之前完成链接规范化,该规范化之后的链接,应该成为该网页唯一合法的“统一资源定位符”,譬如一个产品页面可能会以以下方式出现:
1. https://www.amazon.co.uk/dp/B0BS3ZRCCW?th=1
2. https://www.amazon.co.uk/4pcs-Wheel-Centre-Caps-Replacement/dp/B0BS3ZRCCW/ref=zg-bsnr_automotive_sccl_3/258-4903014-4534368?pd_rd_w=BHv9M&content-id=amzn1.sym.401f1a3a-5fa9-46fb-9ed2-7c7d241a11cd&pf_rd_p=401f1a3a-5fa9-46fb-9ed2-7c7d241a11cd&pf_rd_r=2YQWPCKBZ3AQNX97MTH2&pd_rd_wg=moQWE&pd_rd_r=a80bc1d3-fc5b-4b1b-93ce-4f4f77532037&pd_rd_i=B0BS3ZRCCW&psc=1
3. https://www.amazon.co.uk/4pcs-Wheel-Centre-Caps-Replacement/dp/B0BS3ZRCCW/ref=zg-bsnr_automotive_sccl_3
但是你应该将所有非标准形式统一成标准形式:
https://www.amazon.co.uk/dp/B0BS3ZRCCW
后面无论它怎么重定向,或者增加参数,标准形式是你在系统中唯一合法的URL,其他形式的URL只能作为参考。不建议基于 WebPage.location 做判断来执行某个规则。
您说的这种情况知识url的变种,并不是重定向
我说的是下面这种情况:
原始url: `https://www.amazon.com/gp/profile/amzn1.account.AFZB7W6UM64P5D3NKZ4DEZV4ORYA`
重定向url: `https://www.amazon.com/shop/faithhelizabethh?ref=prof_o_infl`
上面这种情况是没办法规范化的吧?
https://www.amazon.com/gp/profile/amzn1.account.xxxxxxx
这种类型的 url 也存在不重定向的情况:
`https://www.amazon.com/gp/profile/amzn1.account.AHSSB7T6SHD3SXATB5DXGXL2NCXQ`
所以我想了解一下是否可以有方法自定义 extract-config.json
文件中的匹配逻辑,可以匹配重定向之后的 url,否则无法没解析
没有这样的逻辑,可以匹配重定向之后的 url。
相关链接:
如果一个网页在获取后发生了重定向,有什么办法可以配置:extract-config.json 中的patttern 匹配 重定向后的 url 呢?