本文我们将尝试下载如下所示的京东商品晒单图。

来到京东首页,在搜索框中输入关键字,比如:手机。打开浏览器的开发者工具(Ctrl+Shift+I),切换到Network选项。

点击按钮搜索之前输入的关键词,可以看到有如下请求:

请求带到服务器的参数主要有:

keyword: 手机

enc: utf-8

响应内容为一个HTML文件,包含了搜索到的商品的URL。

访问搜索到的某个商品,同样打开浏览器的开发者工具,切换到Network选项,可以看到有如下请求(没有看到的话刷新一下页面):

返回的数据包含了评论相关的数据,晒单图也在其中。

至此,我们将整个过程分析完毕,用代码实现上述过程即可。

import requests

from bs4 import BeautifulSoup

from urllib.parse import urljoin

import re

import os

import json

def parse_goods_url(keyword):

headers = {

"User-Agent":

"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"

}

params = {"keyword": keyword, "enc": "utf-8"}

base_url = "https://search.jd.com/Search"

response = requests.get(base_url, params=params, headers=headers)

soup = BeautifulSoup(response.text, "lxml")

goods_url_list = soup.select("#J_goodsList .gl-item .p-name a")

for good in goods_url_list:

yield urljoin("https://item.jd.com", good.get("href"))

def get_good_comment_image_url(good_url, page_num=1):

headers = {

"User-Agent":

"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",

"Referer":

good_url

}

productId = re.findall("(\d+)", good_url)[0]

base_url = "https://sclub.jd.com/comment/productPageComments.action"

for page in range(page_num):

params = {

"callback": "fetchJSON_comment98vv3487",

"productId": productId,

"score": 0,

"sortType": 5,

"page": page,

"pageSize": 10,

"isShadowSku": 0,

"fold": 1

}

response = requests.get(base_url, params=params, headers=headers)

origin_data = re.findall("(\{.*\})", response.text)[0]

comments = json.loads(origin_data)["comments"]

for comment in comments:

for image in comment.get("images"):

yield urljoin(base_url, image.get("imgUrl"))

def download_image(image_url, good_url):

file_name = image_url.split('/')[-1]

fold_name = re.findall("(\d+)", good_url)[0]

if not os.path.exists(fold_name):

os.makedirs(fold_name)

headers = {

"User-Agent":

"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",

"Referer":

good_url

}

response = requests.get(image_url, headers=headers)

with open("{}/{}".format(fold_name, file_name), "wb") as f_obj:

f_obj.write(response.content)

if __name__ == '__main__':

keyword = "手机"

for url in parse_goods_url(keyword):

print("商品:{}".format(url))

for image_url in get_good_comment_image_url(url):

print("下载:{}".format(image_url))

download_image(image_url, url)

运行结果如下:

python老王卖西瓜_使用Python爬取京东商品晒单图相关推荐

  1. python老王卖西瓜_搞不懂Python?大神教你用Python买西瓜!

    什么是code? code就就是一种语言,一种计算机能读懂的语言.计算机是一个傻*,他理解不了默认两可的任何东西.比如,你让你老公去买个西瓜,你老公会自己决定去哪里买,买几个,找个搞活动打折的买,总之 ...

  2. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  3. python老王卖西瓜_Python难懂?买一次西瓜就懂了!

    点击蓝色字关注 "CU技术社区" 一起玩耍哦~ 什么是code? code就就是一种语言,一种计算机能读懂的语言.计算机是一个傻*,他理解不了默认两可的任何东西.比如,你让你老公去 ...

  4. python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  5. python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...

  6. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  7. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  8. Python爬取京东商品评论

    京东商城的页面不是静态页面,其评论信息存放于json文件中,由ajax控制,所以我们在浏览器上看到的网页源代码和用Python爬下来的是不一样的,所以我们真正要爬取的是评论数据所存放的json文件. ...

  9. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

最新文章

  1. 对着电脑笑了二十分钟(2)
  2. http与https的区别,http 1.0与1.1的区别
  3. forward 和redirect
  4. Log4Net配置使用简记
  5. Android 使用MediaPlayer播放assets或者raw目录的音频文件
  6. 一个最简单的用SAP UI5实现的live search demo,完整代码只有55行
  7. js贪心算法---背包问题
  8. 第四节:HTML5给表单带来的新标签、新属性、新类型
  9. Bootstrap 流式布局
  10. 懂得智能配色的ImageView,还能给自己设置多彩的阴影(PaletteImageView)
  11. linux 挂载raid_linux初学者-磁盘阵列篇
  12. swift获取图片像素颜色值
  13. 从最大似然再看线性回归
  14. 【礼仪大赛策划方案手段】 问穿正装的礼节是什么?到底何为正装?休闲正装?
  15. 用excel制作双层饼图_原创教程:用Excel做动态双层饼图
  16. 项目【QT5.13频谱分析软件】(一)——开篇介绍
  17. amd cpu排行_目前cpu排行榜(2020cpu性能排名对比)
  18. JAVA基础算法练习(5):行星碰撞
  19. 哲理故事与管理之道(22)-用竞争激励下属
  20. MacBook:如何拆卸或安装内存

热门文章

  1. Python教程:zip 函数的用法
  2. python os模块详细用法
  3. python获取数组中最多的元素
  4. python3 的 str bytes 区别
  5. 学python必须知道的30个技巧
  6. javascript技术教程蔡敏_程序员都必掌握的前端教程之JavaScript基础教程(上)
  7. pycharm 如何将同一项目中不同模块代码分屏显示
  8. 线程中start()与run()的区别
  9. python numpy ufunc.reduce(self, a, axis=0, dtype=None, out=None, keepdims=False)函数.(连续执行原始运算对值聚合)
  10. python 如何遍历文件夹下所有图片/文件? os.walk() os.listdir()