Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单页抓取案例

import urllib.request;  #载入urllib.request,用于获取页面html源代码
from pandas import Series;  #载入series包
from pandas import DataFrame;   #载入dataframe包
from bs4 import BeautifulSoup;  #载入beautifulsoup包
import json; #载入json包

response = urllib.request.urlopen('http://item.jd.com/2957726.html'); #获取html源代码
html = response.read(); #将源代码转入html
soup = BeautifulSoup(html); #解析html
data = DataFrame(columns=['Feature', 'Property']) #创建空白dataframe用于装载爬取信息

divSoup = soup.find(id="product-detail-2")  #通过分析,发现规格参数所在部分id
trs = divSoup.find_all('tr');

for tr in trs :
    tds = tr.find_all('td');
    if len(tds)==2: #列表有两个值的时才执行爬取
        f=tds[0].getText();
        p=tds[1].getText();  
        data = data.append(
            Series(
                [f, p], 
                index=['Feature', 'Property']
            ), ignore_index=True
        );

response = urllib.request.urlopen('http://p.3.cn/prices/get?skuid=J_2244423');
jsonString = response.read();
jsonObject = json.loads(jsonString.decode())
jsonObject[0]['p']  #解析p的值,即价格

df.to_csv("D:\\df.csv"); #导出结果

结果:

indexFeatureProperty
0品牌三星(SAMSUNG)
1型号G9350
2颜色深邃黑
3上市年份2016年
4上市月份6月
5输入方式触控
6智能机
7操作系统安卓(Android)
8操作系统版本Android 6.0
9用户界面TouchWiz 4.0
10CPU品牌Qualcomm 骁龙
11CPU型号骁龙820
12CPU频率2.15GHz,1.6GHz
13CPU核数四核
14GPUAdreno 530
15运营商标志或内容
164G网络制式移动4G/联通4G/电信4G
173G网络制式移动3G(TD-SCDMA)/联通3G(WCDMA)/电信3G(CDMA2000)
182G网络制式移动2G/联通2G(GSM)/电信2G(CDMA)
19网络频率4G LTE TDD B38(2600),B39(1900),B40(2300),B41(2500)
20机身内存32GB ROM
21运行内存4GB RAM
22储存卡类型MicroSD(TF)
23屏幕尺寸5.5英寸
24触摸屏电容屏,多点触控
25分辨率2560×1440(2K)
26副屏参数NA
27超大字体支持
28GPS模块支持
29重力感应支持
30光线感应支持
31距离感应支持
32电子罗盘支持
33陀螺仪支持
34后置摄像头1200万像素
35前置摄像头500万像素
36传感器类型CMOS
37闪光灯支持
38变焦模式数码变焦
39自动对焦支持
40收音机不支持
41音乐播放支持
42视频播放支持
43电视播放不支持
44录音支持
45Wi-Fi支持
46WIFI热点支持
47蓝牙支持
48NFC(近场通讯)支持
49OTG支持
50SIM卡尺寸Nano SIM卡
51电池类型锂电池
52电池容量(mAh)3600
53电池更换不支持
54理论待机时间(小时)339
55机身尺寸(mm)150.9 x 72.6 x7.7
56机身重量(g)157
57机身材质玻璃+金属

版权声明:本文为maxca原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。