2017-04-15 105 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

太棒了。非常感谢! –

相关问题