小兵 发表于 2021-4-18 14:52:42

[已解决]求助网页内容的正则筛选导出

本帖最后由 小兵 于 2021-4-19 21:03 编辑

太久不写东西了,本来就不怎么会,现在更是忘光了,只好求助大家了

如何获取商品名称、链接、销量?注:原价有时候有、有时候没有




发哥给的代码如下,有原价可正常获取,部分商品没有原价时(图1右侧)获取价格错位,当所有商品均只有现价时什么也获取不到
#include <array.au3>
Local $hFile = FileOpen('1.txt')
Local $sText = FileRead($hFile)
FileClose($hFile)
Global $aTaobaoItem
Local $aInfo = StringRegExp($sText,'class\s*?=\s*?"item-name[^<>]+?href\s*?=\s*?"(//item\.taobao\.com/item\.htm\?id=\d+)"[^<>]+?>\s*?(\S.*?)</a[\s\S]+?c-price"\s*>([\d\.]+?)<b><[\s\S]+?</b>sale-num"\s*>(\d+?)<',3);
$hw2 = FileOpen("2.txt", 10)
      
If NotMod(UBound($aInfo),4) Then
;         MsgBox(0,UBound($aInfo),UBound($aInfo)/4)
      ReDim $aTaobaoItem
      Local $iIndex = 0
      For $i = 0 To UBound($aInfo) - 1 Step 4
                $aTaobaoItem[$iIndex] = 'https:'&$aInfo[$i]
                $aTaobaoItem[$iIndex] = $aInfo[$i+1]
                $aTaobaoItem[$iIndex] = $aInfo[$i+2]
                $aTaobaoItem[$iIndex] = $aInfo[$i+3]

                FileWriteLine(@DesktopDir & "\2.txt", $i/4+1 &' - '&$aInfo[$i+1] &@CRLF& 'https:'&$aInfo[$i] &@CRLF& '价格:'&$aInfo[$i+2] &@CRLF& '销量:'&$aInfo[$i+3] &@CRLF&@CRLF)
                $iIndex+=1
      Next
      _ArrayDisplay($aTaobaoItem)
EndIf

FileClose($hw2)




发哥的正则在没有蓝框部分时无法正常获取,请教如何修改?

或者各位有什么简单易懂的写法指点指点,感谢各位,感谢发哥

附件1.txt是两页商品的html源码


afan 发表于 2021-4-18 15:20:15

本帖最后由 afan 于 2021-4-18 19:59 编辑


Highlight code by AuREHelper
(?si)"J_TGoldData"\h+href="([^"](?#)+).+?img\h+alt="([^"](?#)+)".+?>¥.+?>([\d.](?#)+)<.+?">已售:<.+?>(\d+)<
注意,论坛的问题导致字符发生改变,以上贴出的字符 ,即¥需自行替换



小兵 发表于 2021-4-18 15:35:27

谢A版,贴上销量图供对比输出结果,呃。。。那么多1元钱的硬盘赶紧来一打挖矿


afan 发表于 2021-4-18 15:37:36

小兵 发表于 2021-4-18 15:35
谢A版,贴上销量图供对比输出结果,呃。。。那么多1元钱的硬盘赶紧来一打挖矿

自己不会改一下……

小兵 发表于 2021-4-18 15:38:01

本帖最后由 小兵 于 2021-4-18 20:46 编辑

afan 发表于 2021-4-18 15:20


使用2楼方法得到与2楼同样的结果:第三行开始不正确 - - ||
¥是改正确的

afan 发表于 2021-4-18 16:04:58

小兵 发表于 2021-4-18 18:37:30

A大可否分享一下上面的正则

afan 发表于 2021-4-18 21:46:04


上面的字符在论坛发帖有问题,没有匹配结果居然不反馈。

Highlight code by AuREHelper
(?si)"J_TGoldData"\h+href="([^"](?#)+).+?img\h+alt="([^"](?#)+)".+?c-price">([\d.](?#)+).+?">已售.+?>(\d+)<


小兵 发表于 2021-4-19 09:18:30

一直在线关注进展的,可能大大误解了,谢谢A大,8楼正则匹配完美

afan 发表于 2021-4-19 12:51:01

解决了就及时修改标题,添加“已解决”
页: [1]
查看完整版本: [已解决]求助网页内容的正则筛选导出