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下载

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AppSync for iOS7安装教程、Cydia软件源安装AppSync补丁

    AppSync for iOS7安装教程、Cydia软件源安装AppSync补丁么是ipa补丁ipa补丁在Cydia里的名称是ApPSync for iOS(版本号),是在越狱之后,通过同步itunes安装破解过的后缀名格式为.ipa软件,所用到的补丁。AppSyncforiOS7怎么安装?以下为安装步骤:将设备至于wifi环境下,打开越狱后新增的Cydia底部状态栏点击 管理,选择软件源点击右上角 编辑 然后点击左上角的 添加

    2022年6月12日
    128
  • JRebel插件使用详解

    JRebel插件使用详解简介JRebel是一套JavaEE开发工具。Jrebel可快速实现热部署,节省了大量重启时间,提高了个人开发效率。JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这…

    2022年6月9日
    56
  • godaddy域名服务器_自己有域名怎么建网站

    godaddy域名服务器_自己有域名怎么建网站自己准备做一个个人网站,由于第一次做所以遇到了各种困难,现在把自己的一些经历经验贴出来供大家参考。此贴针对一个完全没有经验的菜鸟,大牛勿喷。个人搭建一个网站首先要考虑的是网址(域名),然后是你的文件放到哪里(空间)。最后将域名解析后,绑定到空间则网站搭建完成就可以访问。网上关于网站搭建的技术贴有很多,但由于岁月年长有些方法或步骤可能不适用,在这里通过一次个人经历,给大家提供一些经验。一般域

    2022年10月8日
    3
  • pledge to_debezium采集 oracle

    pledge to_debezium采集 oracle下面我们来看两个范例,一个是使用BULKCOLLECT的,一个没有:范例1、使用多次循环来检索并显示数据。范例2、一次性获取数据,然后再循环显示。下面是一些有关BULKCOLLECT的建议:1、从Oracle9i开始,你都可以在静态SQL和动态SQL中使用BULKCOLLECT。2、你可以在任何地方的SELECTINTO,FETCHINTO,和RETURNINGINTO子句中使用BUL…

    2025年5月25日
    3
  • pytorch中的loss函数_pytorch loss不下降

    pytorch中的loss函数_pytorch loss不下降1)两个分布很接近,但是与0和1不接近,loss仍然很大,只适合分类2)mse只计算两个差异,做回归用的,数据相同,bceloss比mseloss大。3)SmoothL1Loss比mseloss小4)bceloss收敛比较快5)bcelossinput必须是0-1之间,targets可以不是6)target是0.5input是0.4与0.6,loss无正…

    2022年9月18日
    4
  • lm算法讲解_m算法

    lm算法讲解_m算法请问MATLAB中LM算法(Levenberg-Marquard-algorithm)的函数是什么?。http://www.mathworks.com/matlabcentral/fileexchange/16063-lmfsolve-m-levenberg-.%.去看吧好像没有二维的.你最好看看这个函数,根据LM算法的意义修改一下计算方法:用来产生一些数据片段(例如消息或会话项)的哈…

    2022年10月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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