我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 881|回复: 7

1抓取京东商品详情页数据到excel-python

[复制链接]

该用户从未签到

61

主题

203

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖原创先锋奖

发表于 2020-4-22 17:40:29 | 显示全部楼层 |阅读模式
[/free]#抓取京东商品详情页数据
import  requests
from bs4 import  BeautifulSoup
import openpyxl
import  time
import  re
import json
#搜索商品列表页的每个商品的链接
def make_a_link(keyword,page):
    url = 'https://search.jd.com/Search?keyword=' + keyword + '&enc=utf-8&page=' + str(page * 2 - 1)
    res = requests.get(url)
    res.raise_for_status()
    res.encoding = res.apparent_encoding  # 转码 为防止出现乱码
    print('正在爬取第' + str(page) + '页:' + url)
    html = res.text
    soup = BeautifulSoup(html, 'lxml')
    links = soup.find_all('li', class_='gl-item')  # 所有商品的li
    return (link for link in links)
#详情页
def detail_link(purl):
    try:
        r = requests.get(purl)
        r.raise_for_status
        r.encoding = 'gbk'
        return r.text
    except:
        print('此页无法链接!!!')
        return ''
#商品的名字和价格
def get_name_price(uid,row,sheet):
    content = detail_link('https://c.3.cn/recommend?&methods=accessories&sku=' + uid + '&cat=9987%2C653%2C655')
    try:
        jd=json.loads(content)
        sheet.cell(row=row,column=2)._value=jd['accessories']['data']['wName']
        sheet.cell(row=row,column=3)._value=jd['accessories']['data']['wMaprice']
        print(jd['accessories']['data']['wName'])
    except:
        return ""
#店铺
def get_shop(uid,row,sheet):
    content = detail_link('https://chat1.jd.com/api/checkChat?pid=' + uid + '&returnCharset=utf-8')
    try:
        jd = json.loads(content.lstrip('null(').rstrip(');'))
        try:
            sheet.cell(row=row, column=4)._value = jd['seller']
        except:
            return ''
    except:
        ''
#商品的评论
def get_comments(uid,row,sheet):
    content = detail_link('https://club.jd.com/comment/productCommentSummaries.action?referenceIds=' + uid)
    jd=json.loads(content)
    sheet.cell(row=row,column=6)._value=jd['CommentsCount'][0]['CommentCountStr'] #总评
    sheet.cell(row=row,column=7)._value=jd['CommentsCount'][0]['GoodCountStr'] #好评
    sheet.cell(row=row,column=8)._value=jd['CommentsCount'][0]['GoodRate'] #好评率
def main():
    wb =openpyxl.Workbook()
    sheet=wb.active
    sheet.title = "京东抓取商品数据.xlsx"
    sheet.cell(row=1,column=1)._value='商品ID'
    sheet.cell(row=1,column=2)._value='商品名称'
    sheet.cell(row=1,column=3)._value= '价格'
    sheet.cell(row=1,column=4)._value='店铺'
    sheet.cell(row=1,column=5)._value= '链接'
    sheet.cell(row=1,column=6)._value='评论数'
    sheet.cell(row=1,column=7)._value='好评数'
    sheet.cell(row=1,column=8)._value= '评论率'
    row=2
    keyword=input("请输入要抓取的商品:")
    pages=input("要抓取的页数:")   #str类型
    starttime=time.time()
    pages=int(pages)
    for page in range(1,pages+1):
        for link in make_a_link(keyword, page):
            uid=link['data-sku']
            # uid = re.match(r'.+?(\d+).+', purl).group(1)  # 商品的ID
            sheet.cell(row=row, column=1)._value =uid
            purl=link.find('div', class_='p-name p-name-type-2').a['href']
            if 'http' not in purl:
                sheet.cell(row=row, column=5)._value = 'http:' + purl
            else:
                sheet.cell(row=row, column=5)._value = purl
            get_name_price(uid, row, sheet)
            get_shop(uid, row, sheet)
            get_comments(uid, row, sheet)
            row+=1
    wb.save('京东抓取'+keyword+'数据.xlsx')
    print('耗时{}秒。'.format(time.time() - starttime))  # 爬取所需时间
if __name__ == '__main__':
    main()[free]
购买主题 本主题需向作者支付 5 枚金币 才能浏览
回复

使用道具 举报

该用户从未签到

523

主题

325

回帖

0

积分

二级逆天

微信交流群:jp-xxj1

积分
0

终身成就奖特殊贡献奖原创先锋奖金点子奖

发表于 2020-4-22 17:48:30 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

0

主题

44

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖

发表于 2020-4-23 07:31:52 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

1

主题

6740

回帖

1280

积分

二级逆天

积分
1280

终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

发表于 2020-4-23 07:39:03 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

76

主题

2895

回帖

84

积分

二级逆天

积分
84

终身成就奖社区居民优秀斑竹奖

QQ
发表于 2020-4-23 08:07:41 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

99

主题

2522

回帖

0

积分

PADS-181217初级班

积分
0

终身成就奖原创先锋奖

QQ
发表于 2020-4-23 08:13:00 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-5-29 20:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    47

    主题

    6492

    回帖

    7755

    积分

    二级逆天

    积分
    7755

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2020-4-23 08:49:42 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    14

    主题

    4695

    回帖

    8873

    积分

    二级逆天

    积分
    8873

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2020-4-23 08:57:55 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表