一、需要具备的技能以及开发环境:

1. 安装python开发环境

2. requests库  BeautifulSoup库

3. 具备python一定基础

二、分析JD搜索商品的URL参数

1. 经过分析可以知道keywork为搜索关键字

2. page参数为筛选商品的页下标,每页30条数据

3. ev参数为筛选商品的价格参数

三、接着 我们分析一下 URL返回来的数据 定位到我们需要的数据

1. 我们发现商品的数据是访问url直接返回来的 所以我们需要分析下商品所在的标签跟每个商品信息对应的标签

2. 发现所有的商品都放在 ul.class = gl-warp这个标签下,ok我们只需分析处理li 然后遍历ul逐个获取即可

四、那么开始coding

1.首先封装一个商品类


class jd_product:def __init__(self):#self.img_path = None #商品图片本地路径self.img_url = None #商品图片urlself.price = None #商品价格self.keyword = [] #商品关键字self.num_of_comment = None #商品评论数self.seller_name = None #卖家名称self.seller_url = None #卖家店铺URLself.tags = [] #商品标签def __repr__(self):return self.__str__()def __str__(self):return '''价格:{}关键字:{}商品标签:{}卖家:{}评论数:{}'''.format(self.price, self.keyword, self.tags, self.seller_name, self.num_of_comment)

2. 开始用request获取到页面数据,重要一点User-Agent这些关键的参数还是要填充一下,以防被封IP(之前抓58工作岗位的时候没在意这些细节就被封了 = =)

from bs4 import BeautifulSoup
import urllib
keyword = '男衣服' #你可以使用 input输入关键字
url = 'https://search.jd.com/Search?keyword=%s&page=1' % (urllib.quote(keyword))
host = 'search.jd.com'
headers = {"Host": 'search.jd.com',"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2","Accept-Encoding": "gzip, deflate","Connection": "keep-alive","Referer": url,"Upgrade-Insecure-Requests": "1"
}
response = requests.get(url, headers=headers)
bs=BeautifulSoup(response.content)
ul = find(bs, 'ul', {'class':'gl-warp'})jdps = []
for i in ul.children:if not isinstance(i, element.Tag):continue #过滤掉 换行\njdp = jd_product()dimg = find(i, 'div', {'class':'p-img'})if dimg:jdp.img_url = find(dimg, 'img')['src']dprice = find(i, 'div', {'class':'p-price'})if dprice:jdp.price = find(dprice, 'i').stringpname = find(i, 'div', {'class':'p-name'})if pname:for j in find(pname, 'em').stripped_strings:jdp.keyword.append(j)pshop = find(i, 'div', {'class':'p-shop'})if pshop:shop = find(pshop, 'a', {})if shop:jdp.seller_name = shop.string jdp.seller_url = host + shop['href']pcommit = find(i, 'div', {'class':'p-commit'})if pcommit:for j in pcommit.stripped_strings:jdp.num_of_comment += jpicons = find(i, 'div', {'class':'p-icons'})if picons:for j in picons.stripped_strings:jdp.tags.append(j)jdps.append(jdp)print(jdps)

结果看图:

评论数 跟 运费险标签是动态加上去  就不去分析了

ps:  同样的代码在本地运行可以抓到数据  在我的阿里云环境上跑 竟然返回跳转登录界面

用curl验证一下:

猜想是不是JD粗暴的把阿里云服务器的IP给过滤了= =!!

python抓取京东的商品信息相关推荐

  1. python京东商品采集_利用Python正则表达式抓取京东网商品信息

    京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%.如此庞大的一个电商网站,上面的商品信息是海量的,小编今天就带小伙伴利用正则表达式,并且 ...

  2. Python爬取京东任意商品数据实战总结

    利用Python爬取京东任意商品数据 今天给大家展示爬取京东商品数据 首先呢还是要分思路的,我分为以下几个步骤: 第一步:得到搜索指定商的url 第二步:获得搜索商品列表信息 第三步:对得到的商品数据 ...

  3. Python爬虫教程:Python爬取京东商城商品大图详解

    Python爬取京东商城商品大图详解 做为一个爬虫初学者,在做爬取网址图片的练习中以京东网为例爬取商品大图并保存在相应的文件夹 1.导入模块 import urllib.request import ...

  4. php 获取京东商品详情,用正则表达式,抓取京东的商品列表

    用正则表达式,抓取京东的商品列表 保存到服务器 抓取文件 实例 require 'function.php'; $url = 'https://list.jd.com/list.html?cat=73 ...

  5. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  6. python抓取京东联盟优惠券_[爬虫]使用python抓取京东全站数据(商品,店铺,分类,评论)...

    网上抓取京东数据的文章,现在要么无法抓取数据,要么只能抓取部分数据,本文将介绍如何抓取京东全站数据,包括商品信息.店铺信息,评论信息,分类信息等. -------------------------- ...

  7. python获取登录按钮_Python:Selenium模拟Chrome浏览器抓取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

  8. Python 抓取动态网页表格信息

    五一假期,研究了下Python抓取动态网页信息的相关操作,结合封面的参考书.网上教程编写出可以满足需求的代码.由于初涉python,过程中曲折很多,为了避免以后遇到问题找不到相关的信息创建本文. 准备 ...

  9. Python爬取淘宝商品信息保存到Excel

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

最新文章

  1. mysql 优化语句
  2. python爬虫qq音乐教学视频_爬取QQ音乐(讲解爬虫思路)
  3. 90%的程序员都没有完全回答对 Cookie 和 Session 的区别?
  4. 未能加载包studio package_Xrepo:一个现代化的跨平台 C/C++ 包管理器
  5. Java参数传递笔记
  6. android 弹窗 onpause,Android 下拉通知栏时Activity的生命周期——重新理解onPause()
  7. Theano模块的安装其实没你想的那么难
  8. ntent action大全
  9. vue中使用setTimeout
  10. 《REINFORCEMENT LEARNING (DQN) TUTORIAL》的学习笔记
  11. qemuuser模式运行linux,在Android上使用qemu-user运行可执行文件
  12. html5编辑漂亮静态页面工具_青岛HTML5与Web前端
  13. shell-脚本入门【转】
  14. 深度学习《InfoGAN模型》
  15. 如何在表格中批量查询号码归属地?
  16. 洛谷P2141 珠心算测验
  17. Android 监听短信2种方式:Broadcast和ContentObserver
  18. spark编程ERROR01——java.lang.NullPointerException
  19. [从 0 开始写一个操作系统] 三、Bootloader 的实现
  20. python使用RSA加密算法

热门文章

  1. 矢量计算机和标量计算机
  2. flutter实现瀑布流布局
  3. [Go语言]我的性能我做主(1)
  4. VCS dump fsdb 波形
  5. linux 不删除文件,清空文件内容命令
  6. 如何调整压力测试工具
  7. python高分书籍推荐_史上最全的Python书排行榜|你想知道的都在这里
  8. 怎样用万用表检查线路是短路还是接地?
  9. Codeforces Round #655 (Div. 2) A
  10. (转载)你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作...