那麼先看一下需求
並在基礎上進行簡單的剔除無效資訊的操作,
例如我想獲取所有農產品土豆的資訊,但是如果鍵入土豆無疑會獲得類似削皮刀之類的東西
那麼這時候我們就需要將他剔除,感謝京東,對物品的分類資訊做的很細膩,我們可以直接獲取到京東的商品資訊,從而進行判斷
但是例如搜尋豬肉時。是會有許多種類的,此時我們就沒法做到很好的剔除工作,如果有建議的朋友可以指導一下
class new_thread(threading.thread):
def __init__(self,dic):
threading.thread.__init__(self)
self.dic = dic
def run(self):
self.result = getxinxi(self.dic)
def get_result(self):
return self.result
先上一下執行緒的重定義,相對重量級的爬蟲採取多執行緒的話效率會快上不好(不過對於現在手頭這個2核的電腦。。可能效果不是特別好)
那麼接下來開始對京東的搜尋過程進行分析
以土豆作為關鍵字:
經過嘗試可以吧pvid給扔了
那keyword顯然是土豆,那麼我們可以在這個網頁獲得什麼呢?
url = ''
content =requests.get(url).text
selector = etree.html(content)
links = selector.xpath(".//*[@id='j_goodslist']/ul/li/div/div[1]/a/@href")
以這個為例
我們獲得了網頁上商品的href屬性,即鏈結
但是一頁有60個商品,這裡只有30條,很明顯網頁採取了動態載入。
此時我們開始抓包
同樣,這是url
根據頭資訊可以輕鬆獲得 referer
這個show_items又可以從上30條資訊獲取到,隨後只要更換page的值即可
urlbase = ''
for i in range(1,40):
header =
content = requests.get(urlbase%(str,str,i,getstr(str)),headers=header).text
這裡講page keyword wq和log_id作為後續加入,方便更換關鍵字,具體實現在後面貼全部**
這個介面中返回的資料是需要進行處理的,如何獲得我們想要的資訊呢?
首先確認一下有效資訊:
商品的title 標題,href鏈結 以及**price
在**這邊我沒法在商品的**找到任何資訊,估計是沒有的
pat_sta = re.compile('
這一塊用的是正規表示式
匹配到了這幾個屬性
id即為商品的id,是唯一的
接下來 就是具體的每個商品的資訊了
這個很簡單,因為屬性都是暴露的
dict[i][u'店鋪'] = links_dianpu[0]
header1 =
url = ''
content2 = requests.get(url%dict[i]['id'],headers=header1).text
str1 = json.loads(content2)
dict[i][u'allcount'] = str(str1[u'commentscount'][0][u'commentcount'])+'+'
dict[i][u'goodcount'] = str(str1[u'commentscount'][0][u'goodcount'])+'+'
dict[i][u'genecount'] = str(str1[u'commentscount'][0][u'generalcount'])+'+'
dict[i][u'poorcount'] = str(str1[u'commentscount'][0][u'poorcount'])+'+'
except:
print 'error'+dic[i]['title']
return dict
傳遞乙個字典,這個字典即是上面獲取到的字典
返回的字典是帶有商品資訊的
大家可以拿去跑了試一下
這是獲取log_id的函式
def getstr(s):
html = requests.get(''%(s,s)).text
soup = beautifulsoup(html, 'lxml')
lis = soup.find_all("li", class_='gl-item')
str1 = ''
for li in lis:
data_pid = li.get("data-sku")
str1=str1+str(data_pid)+','
return str1
沒用資料庫我存在了excel裡,給大家看一下效果圖吧
最主要的幾個實現**都在上面了,其他就是如何多執行緒操作的,就不具體放上來了
謝謝~
selenium 爬蟲爬取京東商城商品資訊
看完用selenium爬取 商品資訊的網課,於是乎想著自己也整乙個selenium程式來爬取京東以作鞏固。寫了幾個小時的 通過不斷除錯,學到了很多細節上的處理,完整 在下方,使用時修改搜尋的引數就可以開始爬取了,事先要安裝goole chrome的驅動。最終爬取的結果儲存在了products陣列中,...
京東商品推薦系統
京東商品推薦系統 個性化推薦是根據使用者的興趣特點和購買行為,向使用者推薦使用者感興趣的資訊和商品。隨著電子商務規模的不斷擴大,商品個數和種類快速增長,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在資訊過載問題中的消費者不斷流失。為了解決這些問題,京東商...
爬取京東商品
一 進入京東主頁 二 進入商品詳情頁 2 商品名稱 3 商品 from selenium import webdriver 用來驅動瀏覽器的 相當於模擬人的點選事件來連續的訪問瀏覽器 from selenium.webdriver import actionchains 破解滑動驗證碼的時候用的 可...