2017-04-15 85 views
0

我得到的只是產品ID或網站HTML代碼中的「diamond-data-id」。如何從html中刮取產品ID?

我想提取所有產品id到一個csv文件,所以我可以刮所有有效的產品頁面,而不是所有的900萬頁有錯誤/ 404頁面。

from bs4 import BeautifulSoup 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import csv 
import time 
import nltk 
import string 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.action_chains import ActionChains 
import re 

url = 'https://www.bluenile.com/diamond-search?track=NavDiaSea' 
driver = webdriver.Chrome() 
driver.get(url) 
html = driver.page_source 
soup = BeautifulSoup(html, "lxml") 

driver.close() 

回答

0

你是對的,你是從「https://www.bluenile.com/diamond-search?track=NavDiaSea」下載HTML不包含任何產品標識。

查看頁面加載時的請求(使用類似Firefox的Firebug插件之類的工具)時,您會看到該網站正在後臺執行一些加載產品數據的請求。

JSON格式的要求,這些產品的下載數據從URL中像https://www.bluenile.com/api/public/diamond-search-grid/v2?country=USA&language=en-us&currency=USD&startIndex=0&pageSize=200&shape=RD&hasVisualization=false&sortColumn=price&sortDirection=asc&_=1492285917847

剛剛嘗試上面的網址在瀏覽器中,它也可能提供最如果不是你想要的所有其他產品數據刮。

然後實驗調整參數,尤其是「的startIndex」,「形狀」,而且分揀的參數,因爲它似乎它們不接受的startIndex> 1000

例如:

https://www.bluenile.com/api/public/diamond-search-grid/v2?country=USA&language=en-us&currency=USD&startIndex=200&pageSize=200&shape=RD&hasVisualization=false&sortColumn=price&sortDirection=asc&_=1492285917847

https://www.bluenile.com/api/public/diamond-search-grid/v2?country=USA&language=en-us&currency=USD&startIndex=400&pageSize=200&shape=RD&hasVisualization=false&sortColumn=price&sortDirection=asc&_=1492285917847

https://www.bluenile.com/api/public/diamond-search-grid/v2?country=USA&language=en-us&currency=USD&startIndex=600&pageSize=200&shape=RD&hasVisualization=false&sortColumn=price&sortDirection=asc&_=1492285917847

https://www.bluenile.com/api/public/diamond-search-grid/v2?country=USA&language=en-us&currency=USD&startIndex=800&pageSize=200&shape=RD&hasVisualization=false&sortColumn=price&sortDirection=asc&_=1492285917847

...等等...

通過爲參數測試各種組合,你就可以下載最如果不是他們所有的產品信息,包括他們的產品ID。

+0

這太棒了,非常感謝你!後續問題,我能夠做300個數據記錄的一個請求,但我們如何繼續獲得獨特的產品ID?來自相同的URL,或者我如何遍歷500個請求以獲得140K +產品id?預先感謝您... –

+0

調整我的答案。您必須修改此URL中的參數才能獲得比初始結果更多的參數。 – rrschmidt

+0

太棒了。非常感謝! –