極客學(xué)院-python利器-爬取淘寶產(chǎn)品信息

Date:2016-12-1
By:Black Crow

前言:

本次作業(yè)為課程第四部分的作業(yè),爬取動態(tài)加載數(shù)據(jù)。爬取下來的數(shù)據(jù)存儲為CSV文件撩穿,然后通過EXCEL做了幾張簡單的圖功舀,爬了淘寶‘bra’關(guān)鍵詞的6800多個的商品。

作業(yè)效果:

海外產(chǎn)品價格遠(yuǎn)高于大陸產(chǎn)品.png

廣東產(chǎn)品占比46%.png

廣東產(chǎn)品均價以河源最高毫别,陽江最低.png

我的代碼:

import requests,json,csv
class Taobao():
'''通過關(guān)鍵詞獲取淘寶頁面娃弓,通過頁面中的json數(shù)據(jù)提取商品信息'''
def init(self,start_page,end_page,keyword):
self.urls =['https://s.taobao.com/search?data-key=s&data-value={}&ajax=true&_ksTS=1480429993551_840&callback=&q={}'.format(str(i*44),keyword) for i in range(start_page,end_page+1)]
self.write_file_head()#一次寫入頭信息
for url in self.urls:#循環(huán)控制多頁內(nèi)容追加寫入
data = self.get_data(url)
product_info_list = self.get_product_info(data)
self.write_file(product_info_list)
def get_data(self,url):
r=requests.get(url)
# data = r.text
data =json.loads(r.text)#轉(zhuǎn)換為dict
return data
def get_product_info(self,data):
porduct_info_list =[]
for i in data['mods']['itemlist']['data']['auctions']:#數(shù)據(jù)較多,可以通過json在線解析網(wǎng)站切換視圖
product_info={
'detail_url':i['detail_url'].replace('//',''),
'location' :i['item_loc'].replace('//',''),
'shoplink' :i['shopLink'].replace('//',''),
'reserve_price':i['reserve_price'],
'fee':i['view_fee'],
'raw_title' :i['raw_title'],
'view_price':i['view_price'],
'pic_url':i['pic_url'].replace('//',''),
'shop_owner':i['nick'],
'user_id':i['user_id'],
}
porduct_info_list.append(product_info)
return porduct_info_list
def write_file_head(self):
with open('product_info.csv', 'a+',newline='') as file:
fieldnames = ['raw_title','view_price','reserve_price','location',
'fee','detail_url', 'shoplink','pic_url','shop_owner' ,'user_id']
writer = csv.DictWriter(file,fieldnames=fieldnames)
writer.writeheader()#因為涉及多頁時重復(fù)寫入頭信息會浪費岛宦,故一次寫入台丛,后續(xù)只寫入產(chǎn)品信息
def write_file(self,product_info_list):
with open('product_info.csv','a+',newline='') as file:#采用a+在底部寫入,'newline'不加會多出空行砾肺,原理暫不知道
fieldnames = ['raw_title','view_price','reserve_price','location','fee','detail_url', 'shoplink','pic_url','shop_owner' ,'user_id']
writer= csv.DictWriter(file,fieldnames=fieldnames)
# writer.writeheader()
writer.writerows(product_info_list)#writerows與writerow不同挽霉,writerows可以寫入字典,相對高效
if name == 'main':
keyword = input('Keyword:') # 輸入關(guān)鍵詞变汪,返回數(shù)據(jù)的基礎(chǔ)依據(jù)
start_page = int(input('From page:'))#因為每頁有44個侠坎,要控制頁碼,先轉(zhuǎn)為int
end_page = int(input('To page:'))#同上
file = Taobao(start_page,end_page,keyword)
print('Done!')


####總結(jié):
>1. 淘寶商品頁顯示的只有100頁(每頁44個商品)裙盾,做測試的時候曾做了300頁实胸,爬取6.8K商品時報錯了。
2. 鏈接中有&callback=json*闷煤,如果不在請求鏈接中刪除童芹,會存在返回的數(shù)據(jù)不是json格式的問題。
3. csv文件寫入的時候用了a+追加寫入鲤拿,所以代碼對頭信息單獨做了處理的假褪,寫入信息過程中在加newline=‘’之前是會出現(xiàn)亂碼,原因暫未查明近顷。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末生音,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窒升,更是在濱河造成了極大的恐慌缀遍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饱须,死亡現(xiàn)場離奇詭異域醇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門譬挚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锅铅,“玉大人,你說我怎么就攤上這事减宣⊙涡耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵漆腌,是天一觀的道長贼邓。 經(jīng)常有香客問我,道長闷尿,這世上最難降的妖魔是什么塑径? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮悠砚,結(jié)果婚禮上晓勇,老公的妹妹穿的比我還像新娘。我一直安慰自己灌旧,他們只是感情好绑咱,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枢泰,像睡著了一般描融。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衡蚂,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天窿克,我揣著相機(jī)與錄音,去河邊找鬼毛甲。 笑死年叮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玻募。 我是一名探鬼主播只损,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼七咧!你這毒婦竟也來了跃惫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤艾栋,失蹤者是張志新(化名)和其女友劉穎爆存,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗砾,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡先较,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年携冤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闲勺。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡噪叙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霉翔,到底是詐尸還是另有隱情,我是刑警寧澤苞笨,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布债朵,位于F島的核電站,受9級特大地震影響瀑凝,放射性物質(zhì)發(fā)生泄漏序芦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一粤咪、第九天 我趴在偏房一處隱蔽的房頂上張望谚中。 院中可真熱鬧,春花似錦寥枝、人聲如沸宪塔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽某筐。三九已至,卻和暖如春冠跷,著一層夾襖步出監(jiān)牢的瞬間南誊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工蜜托, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留抄囚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓橄务,卻偏偏與公主長得像丐枉,于是被迫代替她去往敵國和親少漆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容