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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

scrapy抓取淘宝女郎

發布時間:2025/3/8 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scrapy抓取淘宝女郎 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

scrapy抓取淘寶女郎

準備工作

  • 首先在淘寶女郎的首頁這里查看,當然想要爬取更多的話,當然這里要查看翻頁的url,不過這操蛋的地方就是這里的翻頁是使用javascript加載的,這個就有點尷尬了,找了好久沒有找到,這里如果有朋友知道怎樣翻頁的話,麻煩告訴我一聲,謝謝了...,不過就這樣坐以待斃了嗎,所以就在chrome上搜,結果看到有人直接使用的這個網頁,我當時一看感覺神奇的樣子,這就是簡化版的首頁啊,只需要改變page的數字就可以實現遍歷了,不過還是有點小失落,為什么人家就能找到呢,這個我還是希望知道的朋友能夠分享一下,我也會查看相關的資料,把這個空缺不上的,好了,現在開我們的工作了

  • 我們的目的是抓取冊以及相關的信息,所以我們需要隨便打開一個淘女郎的相冊頁面,然后隨便進入一個相冊即可,很顯然這里的相冊是異步加載的,因此我們需要抓包,這里我抓到了含有相冊的url以及相關信息的json數據,如下圖:

  • 然后我們查看它的url為https://mm.taobao.com/album/j...

  • 通過我嘗試之后這條url可以簡化為:

  • https://mm.taobao.com/album/j...{0}&album_id={1}&top_pic_id=0&page={2}&_ksTS=1493654931946_405

  • 其中user_id是每一個女郎對的id,ablum_id時每一個相冊的id,這里一個女郎有多個相冊,因此這個id是不同的,但是page就是要翻頁的作用了,可以看到我去掉了callback=json155這一項,因為如果加上這一項,返回的數據就不是json類型的數據,其中page是在抓包的時候點擊翻頁才會在下面出現的,可以看到同一個相冊返回的除了page不同之外,其他的都是相同的,因此這里通過page來實現翻頁的數據

  • 上面分析了每一個相冊的url數據的由來,可以看到我們下面需要找到user_id,ablum_id這兩個數據.

  • user_id的獲取:我們打開首頁,然后打開chrome的調試工具,可以看到每一個 女郎的url中都包含user_id這一項,因此我們只需要通過這個實現翻頁然后獲取每一個女郎的url,之后用正則將user_id匹配出來即可,代碼如下

ps=response.xpath('//p[@class="top"]')for p in ps:item=JrtItem()href=p.xpath('a/@href').extract() #這個得到的是一個數組urlif href:item['user_id']=self.pattern_user_id.findall(href[0])[0] #用則正匹配出user_id,其中的正則為 pattern_user_id=re.compile(r'user_id=(\d+)')
  • ablum_id的獲取:想要獲取ablum_id當然要在相冊的頁面查找,于是我們在相冊頁面抓包獲得了如下圖的頁面

  • 通過上圖我們清晰的知道每一個相冊的里面包含多少相冊,但最令人開心的是在這個頁面中不是動態加載,因此我們可以查看它的源碼,當我們查看源碼的時候,我們可以看到和user_id一樣,這里的ablum_id包含在了href中,因此我們只需要找到每一張相冊的url,然后用正則匹配處來即可,其中這個頁面的url簡化為:

  • https://mm.taobao.com/self/al...{0}&page={1}

  • 所以我們可以通過上面得到的user_id構成請求即可,代碼如下:

## 解析得到ablum_id,根據ablum_id解析請求出每一個相冊的json數據def parse_ablum_id(self,response):if response.status==200:print response.urlitem = response.meta['item']soup = BeautifulSoup(response.text, 'lxml')divs = soup.find_all('div', class_='mm-photo-cell-middle')for div in divs:href = div.find('h4').find('a').get('href')items = self.pattern_ablum_id.findall(href) #這里就得到了ablum_id
  • 上面已經獲得了user_id和ablum_id,那么現在就可以請求每一個相冊的json數據了,這個就不用多說了,詳情請看源代碼

MongoDB存儲

安裝方式

  • Windows下安裝請看我的MogoDB干貨篇

  • ubantu直接用sudo apt-get install安裝即可

  • 安裝對應python的包:pip install pymongo

  • 安裝完成以后就可以連接了,下面貼出我的連接代碼

from pymongo import MongoClientclass MongoDBPipelines(object):collection_name = 'taobao'def open_spider(self,spider):self.client = MongoClient('localhost', 27017) #連接,這里的27017是默認的額端口號self.db = self.client['python'] #python是自己的數據庫,當然這里不用提前建好也可以def close_spider(self, spider): self.client.close()def process_item(self,item,spider):self.db[self.collection_name].update({'picId':item['picId']}, {'$set': dict(item)}, True)return item

現在這就算好了,當然這里還有很多東西需要優化的,像代理池。。。最后本人想在暑期找一個地方實習,但是一直沒有好的地方,希望有實習的地方推薦的可以聯系我,在這里先謝謝了

推薦

最后推薦博主的一些源碼

  • scrapy爬取妹子網站實現圖片的存儲,這個只是一個演示怎樣存儲圖片的實例,因此不想過多的投入時間去爬,因此寫的不是很詳細

  • scrapy爬取知乎用戶的詳細信息

更多文章請一步本人博客

總結

以上是生活随笔為你收集整理的scrapy抓取淘宝女郎的全部內容,希望文章能夠幫你解決所遇到的問題。

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