热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

爬虫入门:Firefox结合ScrapyShell爬取网页数据

image阅读本篇大概需要4分钟。本来这篇是要接着之前Python基础的,但由于基础讲的太多,真的会很累。所以先暂停一两篇关于Python基础的分享。这篇分享一些有意思的东西。今天

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

阅读本篇大概需要 4 分钟。

本来这篇是要接着之前 Python 基础的,但由于基础讲的太多,真的会很累。所以先暂停一两篇关于 Python 基础的分享。这篇分享一些有意思的东西。

今天我在 Github 上创建了一个组织,名叫「SpiderMan

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

这个组织的目的是玩转 Python 爬虫,目前其中有一个项目就是昨天我提到的 “什么值得买” 这个平台的爬虫。

目前有三个读者联系到我了,我初步了解了下有一个是爬虫高手 A,另外两个 B 和 C 是有一定 Python 基础,但在爬虫方面还是初次。不过我对他们都是同样的看待,我们建了一个微信群他们有问题都会抛出来。其次我也会去主动问他们某个知识点是否了解,比如今天要提到的 Scrapy Shell。除了刚才提到的 A 会, B 和 C 对这个只是听到过。所以我就把这个知识点在这里安利下。(当然,有兴趣加入组织的可以在后台或者 Github Issues 里面联系我)

Scrapy Shell 是什么?

你可以把这个理解为 Python 爬虫的一个测试工具。提到爬虫,我们最常见就是提取 HTML 中某个标签下的数据,但在提取之前我们需要找到这个标签位置,这个位置在学术上就是 XPath。

大家都知道 HTML 的页面是 XML 格式的,在 XML 中需要定位到某个标签的话就需要有个路径。所以你就可以把 XPath 理解为 XML 中某个标签的路径,比如从 html 标签到 a 标签的内容。

举个实际的简单例子,我们来找找 “什么值得买” 官网页面的 Logo 所在的 Xpath 路径:

1.在 FireFox 中打开“什么值得买”的官网

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

2.在当前页面点击鼠标右键,并选中 “查看元素”

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

3.选中之后,会展示如下界面,然后选中工具栏的左上角 箭头按钮,选中之后就可以用鼠标点击页面上的任意内容,比如我这里点击 Logo

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

看到图片最底部会出现一个路径,这就是 Logo 在 xml 中的路径。可以看到 html->body……-> img 就是 这个 Logo 的 XPath。其中每个路径主要分为三段,第一段是标签名,第二段 # 后面的是当前标签的 id ,第三段 . 后面的是标签的 class 名。那么这个 XPath 就可以这么写:

《爬虫入门:Firefox 结合 Scrapy Shell 爬取网页数据》 image

有了这个 Xpath,我们就可以通过写 Python 的代码去拿到这个标签的数据,一般我们会用到 Scrapy 框架来做这件事。这篇文章暂不分享 Scrapy 框架,不了解的可以看

用 Scrapy 从零写一个爬虫。

那么,我们如何在不写代码的情况下去校验这段 XPath 是否能拿到标签数据呢?

这时候我们就需要用到 Scrapy Shell 来测试这个 XPath 路径到底能不能拿到这个 Logo 图片的地址。

命令:

scrapy shell 'url 地址'

➜ /Users/xiyouMc > scrapy shell 'https://www.smzdm.com'>>> response.xpath('/html/body/header[@id="header"]/div[@id="global-search"]/div[@class="search-inner z-clearfix"]/h1[@id="logo"]/a/img/@src')[]

(看不清的,可以在浏览器打开)

然后我们通过 reponse.xpath() 来拿到这个路径下的标签数据。不过这时候拿到的还是一个 Selector 对象,要拿到准确的数据我们在后面加上 extract()

>>> response.xpath('/html/body/header[@id="header"]/div[@id="global-search"]/div[@class="search-inner z-clearfix"]/h1[@id="logo"]/a/img/@src').extract()[u'https://res.smzdm.com/pc/v1.0/dist/img/activity/17double11/double11gif.gif']>>>

这样我们就通过Scrapy Shell 来拿到了 XPath 的标签数据。当然,这只是爬虫的第一步,不过这也算是爬虫中最关键的一步。

预告下,下周我可能会在某天晚上直播一场从零开始的一个爬虫项目,敬请期待。

有兴趣加入这个组织的可以加我微信 ‘mcx1469’ ,也可以在我的 Github 仓库的 Issues 中提一些,地址:

https://github.com/xiyouMc/SmzdmSpider


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 智能消息服务数字短信使用FAQ
    本文介绍了智能消息服务数字短信的开通流程和操作步骤,包括开通数字短信的路径、申请流程、控制台操作以及API接口对接模式。同时还介绍了数字短信模板的创建规则和要求,包括审核状态的说明和建议。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
author-avatar
b87968557
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有