日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手机淘宝宝贝详情页《问大家》数据爬虫手把手实战,包含动态参数如何生成...

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手机淘宝宝贝详情页《问大家》数据爬虫手把手实战,包含动态参数如何生成... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開年后,一直在弄爬蟲相關方面的工作,今天就以淘寶問大家為例,將爬蟲的整套過程記錄下來。總結經驗,查漏補缺

如何找到問大家的網頁鏈接

  • 打開手機淘寶,隨意瀏覽個寶貝
  • 進入寶貝詳情頁,進入問大家主頁
  • 點擊分享,復制鏈接

  • 在pc打開頁面 得到如下鏈接
  • https://h5.m.taobao.com/wendajia/question2017.html?refId=589773891059&pre_item_id=589773891059&ttid=227200%40taobao_android_8.4.0&sourceType=other&suid=c6b1cff4-e094-4993-b346-95f826b4c9fa&ut_sk=1.We7H9xzG%2BAYDACUebBfQq6dp_21646297_1555054673708.Copy.windvane&un=d75c7f4f3565358ee7c4cca5375f99dd&share_crt_v=1&sp_tk=77+lc0l6dWJBeWVjT0Tvv6U=&cpp=1&shareurl=true&spm=a313p.22.u6.1025058449048&short_name=h.eZDBSMw&sm=4ee92f&app=chrome

    請求分析

    通過谷歌瀏覽器開發者工具的幫助,發現數據在以下請求中

    https://h5api.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/?jsv=2.4.1&appKey=12574478&t=1555055055046&sign=9e6bd7ca6ecd6e303f13ad53d2fd3412&api=mtop.taobao.social.feed.aggregate&v=1.0&ecode=0&timeout=300000&timer=300000&AntiCreep=true&type=jsonp&dataType=jsonp&callback=mtopjsonp1&data=%7B%22cursor%22%3A%221%22%2C%22pageNum%22%3A%221%22%2C%22pageId%22%3A24501%2C%22env%22%3A1%2C%22bizVersion%22%3A0%2C%22params%22%3A%22%7B%5C%22refId%5C%22%3A%5C%22589773891059%5C%22%2C%5C%22namespace%5C%22%3A1%2C%5C%22pageNum%5C%22%3A1%2C%5C%22pageSize%5C%22%3A10%7D%22%7D

    是個get請求,參數都放在url中

    重復請求一些寶貝的問大家內容,發現參數有以下規則

    • 固定參數
    sv: 2.4.1 appKey: 12574478 api: mtop.taobao.social.feed.aggregate v: 1.0 ecode: 0 timeout: 300000 timer: 300000 AntiCreep: true type: jsonp dataType: jsonp callback: mtopjsonp1 data: {"cursor":"1","pageNum":"1","pageId":24501,"env":1,"bizVersion":0,"params":"{\"refId\":\"寶貝ID\",\"namespace\":1,\"pageNum\":1,\"pageSize\":10}"}
    • 動態參數
    t: 1555055055046 sign: 9e6bd7ca6ecd6e303f13ad53d2fd3412

    其中t是時間戳
    sign是動態的校驗參數,所以難點是如何找到sign的生成規則

    sign生成規則

    一般說來請求的參數都是js生成,按照這個思路,通過在js資源文件中全局搜索sign及打斷點的方式。果不其然,找到了相應的js代碼,到目前為止,一切還是挺順利的

    從截圖中可以發現
    sign是由h()函數生成的,h函數的參數是以下幾部分組成

    d.token + "&" + i + "&" + g + "&" + c.data # i 是上面固定參數中的 t,當前的時間戳 # g是上面固定參數中的 appKey # c.data 是上面固定參數中的data

    所以下一步要知道d.token是如何生成的

    token的生成規則

    還是使用在js資源文件中全局搜索token的方式,發現了相關的js代碼

    n.prototype.__getTokenFromCookie = function() {var a = this.options;return a.CDR && j(y) ? a.token = j(y).split(";")[0] : a.token = a.token || j(z),a.token && (a.token = a.token.split("_")[0]),o.resolve()}

    通過對這段js代碼分析,發現token原來是從cookie中提取的:

    _m_h5_tk=1632671ce1a89f17ac8d06525e4b5226_1555062955474

    可以通過正則提出

    token = re.findall(r'_m_h5_tk\=(.+?)_',cookie)[0]

    至此,全部的參數都已經知道生成規則了,接下來可以編寫python代碼請求數據了。
    這些就簡單了,改天有空再貼代碼上來吧,看各位需要:)
    這里只提一點,可以將生成sign的h()函數的代碼單獨放在一個js文件中。
    在python中可以通過

    import execjs

    在python中調用js代碼,即簡單又方便。

    轉載于:https://www.cnblogs.com/yeni/p/10696500.html

    總結

    以上是生活随笔為你收集整理的手机淘宝宝贝详情页《问大家》数据爬虫手把手实战,包含动态参数如何生成...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。