笔者曾经用python第三方库requests来爬取京东商城的商品页内容,经过解析之后发现只爬到了商品页一半的图片。(这篇文章我们以爬取智能手机图片为例)

当鼠标没有向下滑时,此时查看源代码的话,就会看到上图的内容,只有三十个 li 标签(一个li标签中有一个图片地址)。

但是鼠标滑至底部后再查看源代码的话就会看到六十个 li 标签,这才是我们真正需要爬取的内容。下图是鼠标滑至底部时的源代码。

为什么会出现这种原因呢?这是因为京东商城的商品信息是通过动态加载的方式进行加载的,而这种页面又被称为动态页面。要想爬取这种页面就必须模拟浏览器的行为,和页面进行交互。python第三方库selenium恰好能做到这些,只需要将页面滑至底部就行。

首先我们通过pip工具来安装selenium库:

pip install selenium

通过分析每个页面的url链接,我找到了京东商品页每个网页的url的规律:

# search_p 是要查询的商品名称,page后面的值是按照,1,3,5,7,9......的规律递增的,对应的网页是第1页,第2页,第3页......
url = "https://search.jd.com/Search?keyword=" + str(search_p) + "&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=" + \str(search_p) + "&page=" + str(index * 2 + 1)

接着来分析一下图片的地址,通过分析我找到了两种图片链接格式:

一种是上图所示的格式:

<img width="220" height="220" class="err-product" data-img="1" data-lazy-img="//img11.360buyimg.com/n7/jfs/t5530/246/208784477/340617/68b4fcac/58fad33aN05c25515.jpg">

还有一种是这种格式的:

<img width="220" height="220" class="err-product" data-img="1" src="//img14.360buyimg.com/n7/jfs/t4549/6/4532220459/272946/d0b72af9/59119ddbNd25bdd22.jpg">

确定图片格式后,定义一个函数来解析网页中的图片地址,这里我用BeautifulSoup4库对其进行解析。

# 提取网页的图片的网址
def parse_html_page(html):# 对有效图片网址进行提取soup = BeautifulSoup(html, 'lxml')# 定义一个列表来获取分析得到的图片的网址url_items = []li_tags = soup.find_all('li', 'gl-item')for li_tag in li_tags:try:if len(li_tag.img["src"]) >= 10:url_items.append(li_tag.img['src'])else:passexcept:if len(li_tag.img["data-lazy-img"]) >= 10:url_items.append(li_tag.img['data-lazy-img'])else:url_items.append(li_tag.img["src"])return url_items

然后我们开始获取网页源代码,前面已经提到,要想获取到完整的网页源代码,就需要浏览器和网页进行交互,即让浏览器自动执行一个向下滑至网页底部的动作,停顿几秒,等待网页加载完成(这一步必须有,否则获得的网页源代码仍会不完整),待网页加载完成之后就可以获取网页源代码了。

这里使用selenium来使浏览器自动执行向下滑动至网页底部的动作:

# 执行页面向下滑至底部的动作
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# 停顿5秒等待页面加载完毕!!!(必须留有页面加载的时间,否则获得的源代码会不完整。)
time.sleep(5)

网页源代码获取成功之后,便可以用urlretrieve(url, filename=path)方法来定义下载函数。

最后总结一下这个爬虫,有几个方面需要注意:1,每个商品页面对应的url。2,如何利用selenium + 浏览器来解决获取动态页面的源代码的问题。3,如何完整提取每个商品页中的60张图片的url。

点击查看完整源代码

利用python爬虫爬取京东商城商品图片相关推荐

  1. python爬取京东商品图片_python利用urllib实现爬取京东网站商品图片的爬虫实例

    本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -* ...

  2. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  3. python爬虫爬取京东店铺商品价格数据(更新版)

    主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 ##sqlalchemy :备用方案,上传 ...

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

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

  5. 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2)...

    [爬虫]利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2) 第一篇( http://blog.itpub.net/26736162/viewspace-22865 ...

  6. python爬虫爬取彼岸图网图片

    python爬虫爬取彼岸图网图片 话不多说,直接上代码! import requests from PIL import Image from io import BytesIO import re ...

  7. python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  8. Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  9. python爬虫爬取百度贴吧图片,requests方法

    每天一点点,记录学习 近期爬虫项目,看完请点赞哦---: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:python爬虫爬取百度贴吧图片,requests方 ...

最新文章

  1. oracle delete 空间增加,实战经验:关于Oracle Delete数据后空间重用问题的测试
  2. oracle数据库 append,oracle中insert,copy,insert append执行对比
  3. ssh图片上传 java_ssh上传并显示图片
  4. 异步查询回调函数调用
  5. es6之数据结构 set,WeakSet,mapWeakMap
  6. 到底是无线最难?还是核心网最难?
  7. 收银系统服务器有什么好处,生鲜超市收银系统软件怎么选?收银系统能带来什么好处?...
  8. bgb邻居关系建立模型_知识图谱上的双塔召回:阿里的IntentGC模型
  9. 学习linux中踩的坑,踩踩Linux命令中的那些坑
  10. 修改Android中strings.xml文件, 动态改变数据
  11. 标签树状结构JSP中树状图的代码实现
  12. 易语言网页html代码大全,易语言网页操作取网页源码
  13. ISG2014 Writeups
  14. Spring Cloud 中文网
  15. 八皇后问题(详解带注释)
  16. 用户个人隐私保密协议
  17. 弹性布局和AndroidAutoSize屏幕适配
  18. c语言阿拉伯数字转大写,c++阿拉伯数字转化为中文大写
  19. vscode html注释快捷键_最强编辑器 VSCode 系列之插件推荐【不定期更新】
  20. 硬件电路设计-FPGA(EP4CE6)最小系统

热门文章

  1. Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解
  2. C++树状数组模板题 敌兵布阵解题报告
  3. 陈超-商业思维投资之道
  4. js的宏任务和微任务
  5. 敏捷中的过程改进实践和工具
  6. 山东事业单位编考试有户籍限制吗,不是山东省内的可以考吗?
  7. nginx 一个站点支持多端口配置
  8. 数学与计算机教学设计,信息技术与小学数学整合的教案
  9. uc浏览器下载的视频怎么导出来?导出方法分享
  10. 基于Android的手机订餐系统设计与实现(二)