摘要:抓取淘寶女郎準備工作首先在淘寶女郎的首頁這里查看,當然想要爬取更多的話,當然這里要查看翻頁的不過這操蛋的地方就是這里的翻頁是使用加載的,這個就有點尷尬了,找了好久沒有找到,這里如果有朋友知道怎樣翻頁的話,麻煩告訴我一聲,謝謝了,不過就這樣坐
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("http://p[@class="top"]") for p in ps: item=JrtItem() href=p.xpath("a/@href").extract() #這個得到的是一個數組url if 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.url item = 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
MongoDB存儲 安裝方式上面已經獲得了user_id和ablum_id,那么現在就可以請求每一個相冊的json數據了,這個就不用多說了,詳情請看源代碼
Windows下安裝請看我的MogoDB干貨篇
ubantu直接用sudo apt-get install安裝即可
安裝對應python的包:pip install pymongo
安裝完成以后就可以連接了,下面貼出我的連接代碼
from pymongo import MongoClient class 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爬取知乎用戶的詳細信息
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44340.html
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...
摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關注。代碼獲取新浪微博進行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
閱讀 1664·2021-09-28 09:35
閱讀 1136·2019-08-30 15:54
閱讀 1661·2019-08-30 15:44
閱讀 3367·2019-08-30 14:09
閱讀 494·2019-08-29 14:05
閱讀 2665·2019-08-28 17:53
閱讀 1987·2019-08-26 13:41
閱讀 1716·2019-08-26 13:26