<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用Python爬取淘寶2000款T T

          共 2574字,需瀏覽 6分鐘

           ·

          2020-03-21 23:32


          1420811da98611a8d6e4e868d026b139.webp


          各位同學(xué)們,好久沒寫原創(chuàng)技術(shù)文章了,最近有些忙,所以進(jìn)度很慢,給各位道個歉!

          警告:本教程僅用作學(xué)習(xí)交流,請勿用作商業(yè)盈利,違者后果自負(fù)!如本文有侵犯任何組織集團(tuán)公司的隱私或利益,請告知聯(lián)系豬哥刪除!!!

          一、淘寶登錄復(fù)習(xí)

          前面我們已經(jīng)介紹過了如何使用requests庫登錄淘寶,收到了很多同學(xué)的反饋和提問,豬哥感到很欣慰,同時對那些沒有及時回復(fù)的同學(xué)說聲抱歉!

          順便再提一下這個登錄功能,代碼是完全沒有問題。如果你登錄出現(xiàn)申請st碼失敗的錯誤時候,可以更換_verify_password方法中的所有請求參數(shù)。
          ca8add636ca253f8266851b5f9a519e2.webp

          淘寶登錄2.0改進(jìn)中我們增加了cookies序列化的功能,目的就是為了方便爬取淘寶數(shù)據(jù),因為如果你同一個ip頻繁登錄淘寶的話可能就會觸發(fā)淘寶的反扒機(jī)制

          關(guān)于淘寶登錄的成功率,在豬哥實際的使用中基本都能成功,如果不成功就按上面的方法更換登錄參數(shù)!

          二、淘寶商品信息爬取

          這篇文章主要是講解如何爬取數(shù)據(jù),數(shù)據(jù)的分析放在下一篇。之所以分開是因為爬取淘寶遇到的問題太多,而豬哥又打算詳細(xì)再詳細(xì)的為大家講解如何爬取,所以考慮篇幅及同學(xué)吸收率方面就分兩篇講解吧!宗旨還會不變:讓小白也能看得懂

          本次爬取是調(diào)用淘寶pc端搜索接口,對返回的數(shù)據(jù)進(jìn)行提取、然后保存為excel文件!

          看似一個簡單的功能卻包含了很多問題,我們來一點一點往下看吧!

          三、爬取單頁數(shù)據(jù)

          開始寫一個爬蟲項目我們都需要量化后再分步,而一般第一步便是先爬取一頁試試!

          1.查找加載數(shù)據(jù)URL

          我們在網(wǎng)頁中打開淘寶網(wǎng),然后登錄,打開chrome的調(diào)試窗口,點擊network,然后勾選上Preserve log,在搜索框中輸入你想要搜索的商品名稱
          c326cbf8c8bd7a5318e56d33563fae4d.webp
          這是第一頁的請求,我們查看了數(shù)據(jù)發(fā)現(xiàn):返回的商品信息數(shù)據(jù)插入到了網(wǎng)頁里面,而不是直接返回的純json數(shù)據(jù)
          e6da8e71d381c49cd098cad323e37ebb.webp

          2. 是否有返回純json數(shù)據(jù)接口?

          然后豬哥就好奇有沒有返回純json的數(shù)據(jù)接口呢?于是我就點了下一頁(也就是第二頁)
          6fcb7b0c11e7bee90bcaaf13eec618ee.webp
          請求第二頁后豬哥發(fā)現(xiàn)返回的數(shù)據(jù)竟然是純json,然后比較兩次請求url,找到只返回json數(shù)據(jù)的參數(shù)!
          edf55db2e1188448b68f242ae32b7e7b.webp
          通過比較我們發(fā)現(xiàn)搜索請求url中如果帶ajax=true參數(shù)的話就直接返回json數(shù)據(jù),那我們是不是可以直接模擬直接請求json數(shù)據(jù)!

          所以豬哥就直接使用第二頁的請求參數(shù)去請求數(shù)據(jù)(也就是直接請求json數(shù)據(jù)),但是請求第一頁就出現(xiàn)錯誤:
          2f1f22e362e02d113928f14e057c7bfb.webp
          直接返回一個鏈接而 不是json數(shù)據(jù),這個鏈接是什么鬼?點一下。。。
          106845b44046be838498883b859cc9f8.webp
          鐺鐺鐺,滑塊出現(xiàn),有同學(xué)會問:用requests能搞定淘寶滑塊嗎?豬哥咨詢過幾個爬蟲大佬,滑塊的原理是收集響應(yīng)時間,拖拽速度,時間,位置,軌跡,重試次數(shù)等然后判斷是否是人工滑動。而且還經(jīng)常變算法,所以豬哥選擇放棄這條路!

          3.使用請求網(wǎng)頁接口

          所以我們只能選擇類似第一頁(請求url中不帶ajax=true參數(shù),返回整個網(wǎng)頁形式)的請求接口,然后再把數(shù)據(jù)提取出來!

          e1b7f5d28ab18b9e39ebca9ca089ad8e.webp
          這樣我們就可以爬取到淘寶的網(wǎng)頁信息了

          四、提取商品屬性

          爬到網(wǎng)頁之后,我們要做的就是提取數(shù)據(jù),這里先從網(wǎng)頁提取json數(shù)據(jù),然后解析json獲取想要的屬性。

          1.提取網(wǎng)頁中商品json數(shù)據(jù)

          既然我們選擇了請求整個網(wǎng)頁,我們就需要了解數(shù)據(jù)內(nèi)嵌在網(wǎng)頁的哪個位置,該怎么提取出來。

          經(jīng)過豬哥搜索比較發(fā)現(xiàn),返回網(wǎng)頁中的js參數(shù):g_page_config就是我們要的商品信息,而且也是json數(shù)據(jù)格式!
          0eaaa2bd8bc3d122f46dd99e00e7f1c1.webp
          然后我們寫一個正則就可以將數(shù)據(jù)提取出來了!

          goods_match = re.search(r'g_page_config = (.*?)}};', response.text)

          2.獲取商品價格等屬性

          要想提取json數(shù)據(jù),就要了解返回json數(shù)據(jù)的結(jié)構(gòu),我們可以將數(shù)據(jù)復(fù)制到一些json插件或在線解析
          13be58920e9418a92706cba6bf73fbbb.webp
          了解json數(shù)據(jù)結(jié)構(gòu)之后,我們就可以寫一個方法去提取我們想要的屬性了
          6d7114cf40b3be2375264eb9d20e4ad1.webp

          五、保存為excel

          操作excel有很多庫,網(wǎng)上有人專門針對excel操作庫做了對比與測評感興趣可以看看:https://dwz.cn/M6D8AQnq

          豬哥選擇使用pandas庫來操作excel,原因是pandas比較操作方便且是比較常用數(shù)據(jù)分析庫!

          1.安裝庫

          pandas庫操作excel其實是依賴其他的一些庫,所以我們需要安裝多個庫

          pip install xlrd
          pip install openpyxl
          pip install numpy
          pip install pandas

          2.保存excel

          fd709ae1299168a752ee3f61e9cd000a.webp
          這里有點坑的是pandas操作excel沒有追加模式,只能先讀取數(shù)據(jù)后使用append追加再寫入excel!

          查看效果
          d01317f05942d660966f758cde90b05d.webp

          六、批量爬取

          一次爬取的整個流程(爬取、數(shù)據(jù)提取、保存)完成之后,我們就可以批量循環(huán)調(diào)用了。
          3a64baff10b28993b9f2e6b817d7427f.webp
          這里設(shè)置的超時秒數(shù)是豬哥實踐出來的,從3s、5s到10s以上,太頻繁容易出現(xiàn)驗證碼!
          e22d7ddbdb5512760b79a5c9c18ff46a.webp
          豬哥分多次爬取了兩千多條數(shù)據(jù)
          9117b427a1896002f422b88cb7c36acc.webp

          七、爬取淘寶遇到的問題

          爬取淘寶遇到了非常多的問題,這里為大家一一列舉:

          1.登錄問題

          ca8add636ca253f8266851b5f9a519e2.webp
          問題:申請st碼失敗怎么辦?
          回答:更換_verify_password方法中的所有請求參數(shù)。

          參數(shù)沒問題的話登錄基本都會成功!

          2.代理池

          為了防止自己的ip被封,豬哥使用了代理池。爬取淘寶需要高質(zhì)量的ip才能爬取,豬哥試了很多網(wǎng)上免費(fèi)的ip,基本都不能爬取。
          074247bd4bebb7c7f5d5672de2cced0e.webp

          但是有一個網(wǎng)站的ip很好 站大爺:http://ip.zdaye.com/dayProxy.html ,這個網(wǎng)站每小時都會更新一批ip,豬哥試過還是有很多ip是可以爬取淘寶的。

          3.重試機(jī)制

          為了防止正常請求失敗,豬哥在爬取的方法上加上了重試機(jī)制!
          334163b0dde09c392436e293edc499cd.webp
          需要安裝retry庫

          pip install retry

          4.出現(xiàn)滑塊

          上面那些都沒問題,但是還是會出現(xiàn)滑塊,豬哥測試過很多次,有些爬取20次-40次左右最容易出現(xiàn)滑塊。
          e22d7ddbdb5512760b79a5c9c18ff46a.webp
          出現(xiàn)滑塊只能等個半小時后繼續(xù)爬,因為目前還不能使用requests庫解決滑塊,后面學(xué)習(xí)selenium等其他框架看看是否能解決!

          5.目前這只爬蟲

          目前這只爬蟲并不完善,只能算是半成品,有很多可以改進(jìn)的地方,比如自動維護(hù)ip池功能,多線程分段爬取功能,解決滑塊問題等等,后面我們一起來慢慢完善這只爬蟲,使他可以成為一只完善懂事的爬蟲!

          源碼(或閱讀原文):https://github.com/pig6/taobao_spider

          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码一级片| 五月天福利导航 | 欧洲激情综合网 | www.国产视频在线观看 | 黄色无遮挡亚洲 |