数据抓取问题,有个价格不好搞定,请求支援


目标网页 http://www.mymall.com.tw/pro-23381.html?member=5880412

要获取这个页面上的 網路價 $449,

我分析了,是另外单独Post数据去获取,post data在页面的js代码中,但是这个post data居然是变化的,每次刷新页面都不一样,而且没有传商品的ID, 不知道怎么获取的

(主要动作在html代码中的js //得到最新的商品价格部分)

请帮帮忙,我是用c# httpwebrequest 获取的,

实现方法语言不限,大致意思应该都类似的,或者给点思路也好,先谢谢了

编程 c# 网页爬虫

神偷魔理沙 10 years, 4 months ago

读取 /pro-[product_id].html 的页面,使用正则提取 var content = content 的值:


 addon\(window , 'load' , function\(\)\s+\{\s+var content = '([a-zA-Z0-9_/]+)'

然后 POST 到 /goods-money.php


 import urllib
import urllib2
import re

def get_price(product_id):
    url = 'http://www.mymall.com.tw/pro-%s.html' % product_id
    response = urllib2.urlopen(url)
    html = response.read()

    m = re.search(r"addon\(window , 'load' , function\(\)\s+\{\s+"
                  r"var content = '([a-zA-Z0-9_/]+)'", html)
    param_content = m.groups(0)[0]

    data = {"content": param_content}
    req = urllib2.Request('http://www.mymall.com.tw/goods-money.php')
    data = urllib.urlencode(data)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
    response = opener.open(req, data)

    return response.read()

if __name__ == "__main__":
    print get_price('23381')

weichen answered 10 years, 4 months ago

Your Answer