爬虫抓取京东、苏宁、唯品会商品价格

以iphone8为例

#京东做了反爬措施。直接抓取html内容不成功,所以要找到请求接口输入skuIds(商品代号),得到json字符串
jd = "https://p.3.cn/prices/mgets?callback=jQuery6710688&type=1&area=1&pdtk=&pduid=1132198894&pdpin=&pin=null&pdbp=0&skuIds=J_5089225%2CJ_3319787%2CJ_4911001%2CJ_6027746%2CJ_771942%2CJ_899777%2CJ_5524603%2CJ_20178448828%2CJ_5338456%2CJ_11010467023%2CJ_11170365589&ext=11100000&source=item-pc"
#苏宁也做了反爬,打开浏览器调试器找到接口,获取一段json字符串
SuNing="https://pas.suning.com/nspcsale_0_000000000690105188_000000000690105188_0000000000_10_010_0100101_20089_1000000_9017_10106_Z001___R1901001_0.39_0_.html?callback=pcData&_=1528718505339"
#唯品会可以直接通过html内容抓取价格
WeiPinghui="https://detail.vip.com/detail-2959674-534092575.html"

#解析网址或解析请求接口信息
request_data1=urllib.request.urlopen(jd)
request_data2=urllib.request.urlopen(SuNing)
request_data3=urllib.request.urlopen(WeiPinghui)
contentx1=request_data1.read().decode("UTF-8")
contentx2=request_data2.read().decode('utf-8')
contentx3=request_data3.read().decode('utf-8')

#取得key=’p‘对应的值,得到京东上 iphone8 价格
price1=str(contentx1).split('\"p\":\"')[1]
price1=price1.split('\"')[0]

#苏宁返回的json字符串较复杂,直接还原成字符串,split()分离出想要的结果,效果等同于从多层嵌套的列表和字典中找到keypromotionPrice的值
price2=str(contentx2).split('promotionPrice\":\"')[1]
price2=price2.split('\"')[0]

#通过bsBeautifulSoup()进行html语法解析
soup3=BeautifulSoup(contentx3,"html.parser")

#通过bsfind_all()过滤得到价格区间字符串。
# 中间有~字符,所以先split()过滤一次,取第一个有效字符串得到唯品会 iPhone8 价格
price3=soup3.find_all('span',attrs={"class":"J-price"})[0].string.split('~')[0]


price1 = float(price1)
price2 = float(price2)
price3 = float(price3)

你可能感兴趣的:(爬虫,python)