• Scrapy爬虫框架实战案例(适合小白人门)


    初识Scrapy

    • 开发环境

    • 创建项目

    • 创建爬虫

    • 项目结构图

    • 创建Item

    • 分析HTML

    • 爬取网页

    开发环境

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


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

    “去哪儿”:http://bnb.qunar.com/hotcity.jsp

    创建项目

    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”呀!!!

    正文结束!!!

    欢迎关注公众号:Python爬虫数据分析挖掘,方便及时阅读最新文章

    记录学习python的点点滴滴;

    回复【开源源码】免费获取更多开源项目源码;

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    算法 —— Count pairs with given sum ——dictionary的妙用,高,实在是高!!!
    map 文件
    objdump 从 ELF 文件 反汇编
    STM32 如何定位导致发生 hard fault 的代码段
    基于linux下的krpano的使用
    w3c规定,当请求的header匹配如下不安全字符时,将被终止
    IDEA中Upsource插件的安装及使用
    SVN服务器迁移方法(Windows环境)
    1. ML605开发板测试
    福禄克15B+ 和FLUKE 179C 测试1000UF电解电容速度差异
  • 原文地址:https://www.cnblogs.com/chenlove/p/14038541.html
Copyright © 2020-2023  润新知