python3+Scrapy爬虫实战(一)—— 初识Scrapy

python3+Scrapy爬虫实战(一)—— 初识Scrapy目录目录初识Scrapy开发环境创建项目创建爬虫项目结构图创建Item分析HTML爬取网页Markdown及扩展表格定义列表代码块脚注目录数学公式UML图:离线写博客浏览器兼容初识Scrapy本人是一名Scrapy的爱好者和初学者,写这文章主要是为了加深对Scrapy的了解,如果文章中有写的不对或者有更好的方式方…

大家好,又见面了,我是你们的朋友全栈君。

转载请注明作者和出处:https://blog.csdn.net/finn_wft/article/details/80881946

初识Scrapy

本人是一名Scrapy的爱好者和初学者,写这文章主要是为了加深对Scrapy的了解,如果文章中有写的不对或者有更好的方式方法欢迎大家指出,一起学习。

开发环境

运行平台:Windows 10
Python版本:Python 3.6.1
Scrapy版本:Scrapy 1.4.0
IDE:Sublime text3
浏览器:chrome


下面我们进入本文的主题,爬取我们的第一个网页“去哪儿”的酒店城市列表,图中红色框框部门。
这里写图片描述

创建项目

scrapy startproject qunar

这里写图片描述
红框中是指出创建一个新爬虫。

创建爬虫

cd qunar
scrapy genspider hotel bnb.qunar.com

这里写图片描述
自此,我们的项目算是基本创建好了,其中“hotel”是指爬虫的名称,“bnb.qunar.com”爬虫的域名。不过为了方便我们项目启动,可以在项目中新建一个entrypoint.py文件,文件内容如下:
这里写图片描述

项目结构图

这里写图片描述

创建Item

创建一个新的Item方便我们保存所爬取的数据,从爬取的页面中可以看出,我们需要两个数据就够了,一个是城市名称,另一个是城市对应的URL。
下面我们就来创建保存这两个数据Item:
这里写图片描述
上面QunarItem是由scrapy自动生成出来的,我们暂时先不管它,如果你想直接用系统创建的那个Item也是可以的。我这里是自己新创建一个,看起来比较好管理。

分析HTML

按F12进入开发者工具,在按Ctrl + Shift + c 进入元素查找状态,找到包裹我们要爬取内容的div,如图下所示:
这里写图片描述
从图中可以看出,A~Z分别在一个div中,所以我们只要解析出一个div那其他25个div也就解析出来了。然后,我们在从右侧中一层一层点进去,找到第一个城市“阿坝”,如下图所示:
这里写图片描述
通过对图的观察,可以发现,我们首先要找到包裹所以内容class=”b_allcity”的div,在从这个div中找到所有class=”e_city_list”的div,在从中找到所有“li”标签中的“a”标签,爬取“a”标签中的文本及“href”属性。

item我们已经创建好了,对HTML页面也进行了分析,下面就可以进入主题了“爬虫”,有点小激动。

爬取网页

打开spiders中的hotel.py文件。这文件是系统帮我们创建的,系统帮我们创建了一下关键代码。如图
这里写图片描述
下面我们只要对这么代码稍稍改动一点,并写出之前我们对HTML解析的代码就好了。如图:
这里写图片描述
本文中我使用的是“BeautifulSoup”来对HTML代码进行解析的,如果有没装“BeautifulSoup”的小伙伴可以在命令窗口中直接安装,安装代码:

pip install bs4

写到这里,代码就已经写完了,下面我们就来运行起来看看效果如何。
在命令窗口输入:

python entrypoint.py

这里写图片描述
结果:
这里写图片描述
从图中可以看出,我们要爬取的内容已经被我们爬取出来了。是不是觉得“so easy”呀!!!

文中代码部分都是用图片的,目的是希望小伙伴们可以直接上手自己敲,代码只有敲多了才能记得更牢,才能学的更快。
本文源代码会在下面给出,如果有什么不懂的地方可以直接下载源代码查看。
因为本人也是一名初学者,如果有什么好的建议欢迎大家在评论中写出,大家一起学习!

源代码下载

CSDN下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153119.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 三种实现分布式锁的方式

    三种实现分布式锁的方式一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均…

  • 基于SpringBoot的JWT单点登录

    基于SpringBoot的JWT单点登录单点登录单点登录SSO,分布式架构中通过一次登录,就能访问多个相关的服务。快速入门首先引入Jwt依赖<!–JWT–><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4&

  • k8s pod配置_k8s cka

    k8s pod配置_k8s ckak8sPod的结构Pod定义Pod的配置镜像拉取策略启动命令环境变量(不推荐)端口设置资源配额Pod的介绍Pod的结构每个Pod中都包含一个或者多个容器,这些容器可以分为两类:用户程序所在的容器,数量可多可少。Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:可以以它为依据,评估整个Pod的健康状况。可以在根容器上设置IP地址,其它容器都共享此IP(Pod的IP),以实现Pod内部的网络通信(这里是Pod内部的通讯,Pod之间的通讯采用虚拟二层网络技术来实现,我们当前环境使

  • opencv的imread函数_opencv imwrite

    opencv的imread函数_opencv imwrite近日,开始学习图像处理,思前想后决定以opencv作为实验基础。遂完成图片读取和显示功能。Imread作为常用的图像读取函数,虽然简单,但是参数的选择非常重要,直接影响到后期处理。同时在调试学习过程中也可以学习到图像处理的知识。0函数原型   Matimread(constString&filename,intflags=IMREAD_COLOR);

    2022年10月14日
  • python如何生成随机数_python 随机字符串

    python如何生成随机数_python 随机字符串今天学习了用python生成仿真数据的一些基本方法和技巧,写成博客和大家分享一下。本篇博客主要讲解如何从给定参数的的正态分布/均匀分布中生成随机数以及如何以给定概率从数字列表抽取某数字或从区间列表的某一区间内生成随机数,按照内容将博客分为3部分,并附上代码。1从给定参数的正态分布中生成随机数当考虑从正态分布中生成随机数时,应当首先知道正态分布的均值和方差(标准差),有了这些,就可以调用pytho…

  • 哈佛大学《幸福课》笔记

    哈佛大学《幸福课》笔记前述整个九月份以来一直在找工作,工作签好后有各种杂事需要做。当然,更主要的原因是自己懒,所以博客有一个多月没有更新了。今天将自己在大二暑假跟着视频学过的哈佛大学的《幸福课》整理成一篇文章,希望自己以后能够克服困难,多阅读,多学习,多写作,每天能够过的开心充实有意义。《幸福课》笔记(Tal的幸福秘籍)1、你问的问题经常会决定你所做的探索,问题会带来探索。2、信念创造现实,如何理解

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号