當前位置:首頁 » 編程語言 » python爬淘寶

python爬淘寶

發布時間: 2023-08-09 20:46:46

① 怎樣用python抓取淘寶評論

#coding=utf-8

importurllib2
importsys
importjson
importre

#設置系統默認編碼為utf-8
reload(sys)
sys.setdefaultencoding("utf-8")

#Onlyforpython2
'''
只是簡單的示例,沒有檢查無評論的情況,其它異常也可能沒有檢查,
你可以根據自己的需要再對代碼修改
'''

#解析網頁數據
defparseData(html_data,reg_str):
pattern=re.compile(reg_str)
result=re.search(pattern,html_data)
ifresult:
returnresult.groups()


#commodity_url為商品詳情頁面
commodity_url="http://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9140345655.2.y3LCj0&id=44454286657"

html_data=urllib2.urlopen(commodity_url).read()
#獲取用戶ID和商品ID
auction_msg=parseData(html_data,r'userNumId=(.*?)&auctionNumId=(.*?)&')
ifnotauction_msg:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()

reviews_url="http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list&currentPageNum=1&rateType=&orderType=sort_weight&userNumId=%s&auctionNumId=%s"%auction_msg

response=urllib2.urlopen(reviews_url)
reviews_data=response.read().decode("gbk")

#獲取評論數據
json_str=parseData(reviews_data,r'((.*))')[0]
ifnotjson_str:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()

jdata=json.loads(json_str)

#下面只列印了第一條評論,如需要列印所有,則遍歷jdata["comments"]即可
printjdata["comments"][0]["content"]

② 如何用python抓取淘寶京東網頁所有審查元素,不是源代碼

審查元素顯示的其實就是格式化之後的源代碼,你可以用對比一下。

下面是一個Python3使用urllib庫讀取源代碼的例子,如果要處理成審查元素那樣的格式,需要對html標簽逐個處理下

importhttp.cookiejar
importurllib.request
ckjar=http.cookiejar.MozillaCookieJar()
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(ckjar))
res=opener.open("http://jd.com")
htm=res.read().decode('gbk')
print(htm)

③ 如何爬蟲天貓店鋪數據python

本編博客是關於爬取天貓店鋪中指定店鋪的所有商品基礎信息的爬蟲,爬蟲運行只需要輸入相應店鋪的域名名稱即可,信息將以csv表格的形式保存,可以單店爬取也可以增加一個循環進行同時爬取。

源碼展示

首先還是完整代碼展示,後面會分解每個函數的意義。

# -*- coding: utf-8 -*-
import requests
import json
import csv
import random
import re
from datetime import datetime
import time

class TM_procs(object):
def __init__(self,storename):
self.storename = storename
self.url = ''.format(storename)
self.headers = {
"user-agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 "
"(KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
}
datenum = datetime.now().strftime('%Y%m%d%H%M')
self.filename = '{}_{}.csv'.format(self.storename, datenum)
self.get_file()

def get_file(self):
'''創建一個含有標題的表格'''
title = ['item_id','price','quantity','sold','title','totalSoldQuantity','url','img']
with open(self.filename,'w',newline='') as f:
writer = csv.DictWriter(f,fieldnames=title)
writer.writeheader()
return

def get_totalpage(self):
'''提取總頁碼數'''
num = random.randint(83739921,87739530)
enrl = '/shop/shop_auction_search.do?sort=s&p=1&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
url = self.url + enrl.format(num)
html = requests.get(url,headers=self.headers).text
infos = re.findall('(({.*}))',html)[0]
infos = json.loads(infos)
totalpage = infos.get('total_page')
return int(totalpage)

def get_procts(self,page):
'''提取單頁商品列表'''
num = random.randint(83739921, 87739530)
enrl = '/shop/shop_auction_search.do?sort=s&p={}&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
url = self.url + enrl.format(page,num)
html = requests.get(url, headers=self.headers).text
infos = re.findall('(({.*}))', html)[0]
infos = json.loads(infos)
procts = infos.get('items')
title = ['item_id', 'price', 'quantity', 'sold', 'title', 'totalSoldQuantity', 'url', 'img']
with open(self.filename, 'a', newline='') as f:
writer = csv.DictWriter(f, fieldnames=title)
writer.writerows(procts)

def main(self):
'''循環爬取所有頁面寶貝'''
total_page = self.get_totalpage()
for i in range(1,total_page+1):
self.get_procts(i)
print('總計{}頁商品,已經提取第{}頁'.format(total_page,i))
time.sleep(1+random.random())

if __name__ == '__main__':
storename = 'uniqlo'
tm = TM_procs(storename)
tm.main()

上面代碼是選擇了優衣庫作為測試店鋪,直接輸入優衣庫店鋪的域名中關鍵詞即可,最終表格會按照店鋪名稱和時間名詞。

代碼解讀

導入庫說明

  • requests庫不用多數,爬取網頁的主要庫

  • json庫是用來解析 json 格式的數據的,也就是 Python 中的字典格式

  • csv庫是用來創建 csv 表格和保存信息的

  • random庫是用來生成一個隨機數的,這個代碼中用到了兩次,第一次是生成一個隨機數據去獲取最新的網頁信息而不是緩存信息,第二次是隨機一個時間,來減緩爬蟲速度

  • re庫是正則,主要用來提取信息

  • datetime和time都是時間庫,前者一般用來生成當前時間字元串,後者本爬蟲使用設置延遲時間

  • 爬蟲思路

  • 首先通過分析手機端天貓店鋪所有商品的網頁,可以發現每次下滑一頁都有一個 js 被載入,這個 js 的規律可以總結一下;

  • 通過分析可以發現每次請求 js 都可以得到一個關鍵信息,那就是 total_page 這個參數,這也一想就能猜到,就是當前店鋪的總頁碼數,所以可以先取得這個數字,然後使用循環爬取全店商品;

  • 每一頁有24個商品,而請求得到的是一個類似於 json 格式的網頁信息,但是並非是直接的 json,所以可以用正則表達式提取符合 json 格式的部分留用;

  • 將每一頁的信息保存到 csv 表格中,可以直接使用 csv 庫的字典存儲方式,非常方便;

  • 得到了單頁的信息,也得到了總頁碼數,只需要一個循環就可以爬取全店的商品了。

  • 構造爬蟲類

  • def __init__(self,storename):

  • self.storename = storename

  • self.url = '.format(storename)

  • self.headers = {

  • "user-agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 "

  • "(KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"

  • }

  • datenum = datetime.now().strftime('%Y%m%d%H%M')

  • self.filename = '{}_{}.csv'.format(self.storename, datenum)

  • self.get_file()

  • 上面代碼依次完成以下操作:

  • 首先整個爬蟲是寫成了一個類,在初始化類的時候需要傳遞一個參數,這個參數就是店鋪的名稱。

  • 然後構造出店鋪的所有商品頁面的前半部分,這部分都是不會變的

  • 接著設置一個請求頭

  • 按照當前時間生成一個以時間為依據的字元串,用來給文件命名,然後賦值給文件名稱,確定保存文件的名稱

  • 最後一句是在類生成的時候就運行這個函數,及生成一個帶有標題的表格,後面會說道這個函數的具體含義

④ 如何用python抓取淘寶單個寶貝每個sku的價格

用Python抓取還要寫代碼,太麻煩了,也不適合比較懶的,不想學寫代碼的人,幹嘛不下個免費的前嗅採集器呢,用可視化採集,只需要點點點就可以抓到你想要的欄位信息了,還是比較適合代碼基礎差、懶得學的人群使用的。你要是想採集點難度較大的網站的話,也可以找客服人員,咨詢配置模板的售價,也不是很貴的。

⑤ 怎麼使用python獲取淘寶數據

兩種方法:

  1. 網路爬蟲。使用urllib2和BeautifulSoup(或者正則表達式)去抓取網頁數據,大部分的網站都要這么做。

  2. 淘寶開放平台SDK。申請一個sdk用戶,然後調用API。支持python2.7以上版本。

熱點內容
華為平板怎麼儲存伺服器文件 發布:2025-02-06 12:49:21 瀏覽:479
php查詢結果數組 發布:2025-02-06 12:31:05 瀏覽:714
怎樣把照片壓縮打包 發布:2025-02-06 12:15:19 瀏覽:496
如何編譯java文件 發布:2025-02-06 12:05:58 瀏覽:237
九九乘法編程 發布:2025-02-06 12:05:05 瀏覽:519
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:871
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:586
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:99
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:997
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:824