找回密码
 加入
搜索
查看: 9591|回复: 16

[IE类操作] 帮忙来个正则吧。淘宝要得到这个商品的,价格,名字。销量

[复制链接]
发表于 2012-7-16 02:17:24 | 显示全部楼层 |阅读模式
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.open("GET", "http://detail.tmall.com/item.htm?id=13620534478", False)
$oHTTP.send()
$source1 = $oHTTP.responsetext
MsgBox(0,0,$source1)


要得到这个商品的,价格,名字。销量

评分

参与人数 1金钱 -10 收起 理由
afan -10

查看全部评分

发表于 2012-7-16 12:07:57 | 显示全部楼层
回复 1# 9922250

月销量和月成交记录,通过查看网页源码显示总是0,不知如何提取,其它可以.

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.open("GET", "http://detail.tmall.com/item.htm?id=13620534478", False)
$oHTTP.send()
$source1 = $oHTTP.responsetext

Local $aTitle,$sTitle = ""
$aTitle = StringRegExp($source1,'name="title"\s*value="(.*?)"',3)
If Not @error Then $sTitle = $aTitle[0]

Local $aPrice,$iPrice = ""
$aPrice = StringRegExp($source1,'"J_StrPrice"\s*>(\d+\.\d+).*元',3)
If Not @error Then $iPrice = $aPrice[0]

Local $aSales,$iSales = ""
$aSales = StringRegExp($source1,'(?i)月\s销\s量:</SPAN><EM>(\d*)</EM>件',3)
If Not @error Then $iSales = $aSales[0]

MsgBox(0,"","商品名称:" & $sTitle & @CRLF & "价格:" & $iPrice & @CRLF & "月销量:" & $iSales)
 楼主| 发表于 2012-7-16 12:25:44 | 显示全部楼层
问了几个朋友,好像都弄不了。
 楼主| 发表于 2012-7-16 15:50:37 | 显示全部楼层
回复 2# fpquenya


    A版给了这个正则,说是要先替换掉 回车

StringRegExp($source1,'(?!)月 销 量:</SPAN><EM>(\d*)</EM>',3)


还是不会弄。。
发表于 2012-7-16 17:26:05 | 显示全部楼层
弄个gui不显示, 创建对象,_IEDocReadHTML 读取网页试试
 楼主| 发表于 2012-7-16 18:04:16 | 显示全部楼层
回复 5# afan


    直接用 IE 浏览器的方式,就可以,但是速度太慢,

而且做这个程序,是为了代理别人的商品。要每天批量查询价格和销量的变动
发表于 2012-7-16 18:22:49 | 显示全部楼层
帮你找到了!!
打开http://detail.tmall.com/item.htm?id=13620534478后,这个网页里面获取一个"initApi" : 这个字段后面的一个网址,这个网址打开后有个"sellCountDO":{"sellCount":200},这个样的字段,这个里面的200就是已经售出的数量了..具体的你自己写打码把

可以的话加个分把..

评分

参与人数 1金钱 +30 贡献 +2 收起 理由
afan + 30 + 2 +.

查看全部评分

 楼主| 发表于 2012-7-19 00:36:46 | 显示全部楼层
回复 7# suiyefeng


    有难度。。。磨不出来。。
发表于 2012-7-20 08:38:29 | 显示全部楼层
回复 8# 9922250


    源码给你把...
  
#include <WinHttp_GetRespond.au3>

$url = "http://detail.tmall.com/item.htm?id=13620534478&static=false&hasbucket=1"
$list = SellCount($url)

MsgBox(64,"月销量",$list)

Func SellCount($url)

        $rContext = _WinHTTP_GetRespond(-1, $url, 4 + 2, 10000)
        If @error Then
                Return -1
        EndIf
        ;获取含有销量的网址
        $initapi = StringRegExp($rContext[0], '"initApi" :.*"(.*?)"', 3)
        If Not IsArray($initapi) Then
                Return -1
        EndIf
        ;获取销量
        $rContext = _WinHTTP_GetRespond(-1, $initapi[0], 4 + 2, 10000)
        If @error Then
                Return -1
        EndIf

        $count = StringRegExp(BinaryToString($rContext[0]), '"sellCount":(\d*)', 3)
        If IsArray($count) Then
                Return $count[0]
        Else
                Return -1
        EndIf
        
EndFunc
发表于 2012-8-2 19:11:11 | 显示全部楼层
有难度。。。磨不出来。。
发表于 2012-12-7 12:37:27 | 显示全部楼层
本帖最后由 小影 于 2012-12-7 12:43 编辑
#include <IE.au3>
#include<guiconstantsex.au3>
#include<file.au3>
#include<windowsconstants.au3>
GUICreate("IE", 500, 480)
Global $gccal = GUICtrlCreateInput("", 10, 340, 440, 30)
Global $gccal2 = GUICtrlCreateInput("", 10, 380, 440, 30)
Global $gccal3 = GUICtrlCreateInput("", 10, 420, 440, 30)
_IEErrorHandlerRegister()
$oie = _IECreateEmbedded()
Local $obj = GUICtrlCreateObj($oie, 10, 10, 490, 290)
GUISetState()
GUIRegisterMsg($WM_SYSCOMMAND, "wm_syscommand")
Global $url = "http://detail.tmall.com/item.htm?id=13620534478"
test($url)
While 1
        Local $msg = GUIGetMsg()
        Select
                Case $msg = -3
                        Exit
        EndSelect
        Sleep(1000)
WEnd

Func test($url)
        Local $html = _IENavigate($oie, $url)
        _IEAction($oie, "refresh")
        _IELoadWait($oie)
        Local $html3 = _IEBodyReadHTML($oie)
        $hw = FileOpen(@DesktopDir & "\1.txt", 10)
        FileWrite($hw, "")
        FileWriteLine(@DesktopDir & "\1.txt", $html3)
        Local $strarray
        _FileReadToArray(@DesktopDir & "\1.txt", $strarray)
        
        FileClose($hw)
        FileDelete(@DesktopDir & "\1.txt")
        GUICtrlSetData($gccal, "")
        For $i = 238 To $strarray[0]
                Local $strmid = StringRegExp($strarray[$i], "举报此商品", 3)
                If Not @error Then; 名称
                        Local $Strname = StringRegExp($strarray[$i - 1], 'target=_blank>([^\/]+?)</A>', 3) ;获取名称
                        If Not @error Then
                                GUICtrlSetData($gccal, "商品名称:" & $Strname[0])
                        EndIf
                EndIf
                Local $Sreg = StringRegExp($strarray[$i], 'Price>(\d+\.\d+)</STRONG>.*什么是专柜价', 3) ;获取价格
                If Not @error Then
                        GUICtrlSetData($gccal2, "价格:" & $Sreg[0] & " 元")
                EndIf
;~                 Local $strmid3=StringRegExp($strarray[$i],"预计三日达",3) ;此字符为网站内容唯一的,可利用
;~                 If Not @error Then ;月销量
                Local $Srtmo = StringRegExp($strarray[$i], '.*月销量.+Num>(\d+)</EM>', 3) ;获取销量
                If Not @error Then
                        GUICtrlSetData($gccal3, "月销量:" & $Srtmo[0] & " 件")
                        ExitLoop
                EndIf
;~                 EndIf
        Next

EndFunc   ;==>test

Func wm_syscommand($hWnd, $sMsg, $sWParam, $slParam)
        Switch $sWParam
                Case 61536
                        Exit
        EndSwitch
EndFunc   ;==>wm_syscommand
发表于 2012-12-7 12:59:50 | 显示全部楼层



上效果图一张

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-12-8 07:30:46 | 显示全部楼层
学习一下,,,
发表于 2012-12-8 09:18:57 | 显示全部楼层
只想说句!!正则无敌啊~~~~!学习了
发表于 2012-12-8 09:19:58 | 显示全部楼层
只想说句!!正则无敌啊~~~~!学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 16:05 , Processed in 0.092457 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表