资讯专栏INFORMATION COLUMN

快速上手——我用scrapy写爬虫(一)

curlyCheng / 513人阅读

摘要:写在前面用写爬虫的人很多,的爬虫框架也很多,诸如和,笔者还是笔记倾向于,本文就用写一个小爬虫。本文适用于有一定基础的,并且对爬虫有一定了解的开发者。

写在前面

用python写爬虫的人很多,python的爬虫框架也很多,诸如pyspider 和 scrapy,笔者还是笔记倾向于scrapy,本文就用python写一个小爬虫demo。
本文适用于有一定python基础的,并且对爬虫有一定了解的开发者。

安装 Scrapy

检查环境,python的版本为3.6.2,pip为9.0.1

F:	echleepython>python --version
Python 3.6.2

F:	echleepython>pip --version
pip 9.0.1 from d:program filespythonpython36-32libsite-packages (python 3.6)

安装scrapy框架

F:	echleepython>pip install scrapy
Collecting scrapy
  Downloading Scrapy-1.4.0-py2.py3-none-any.whl (248kB)
    100% |████████████████████████████████| 256kB 188kB/s
    // 漫长的安装过程
Successfully installed Twisted-17.9.0 scrapy-1.4.0

如果报错:

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

请安装Visual C++ 2015 Build Tools
http://landinghub.visualstudi...

安装完成

F:	echleepython>scrapy version
Scrapy 1.4.0
创建项目
F:	echleepython>scrapy startproject scrapyDemo
New Scrapy project "scrapyDemo", using template directory "d:program filespythonpython36-32libsite-packagesscrapy	emplatesproject", created in:
    F:	echleepythonscrapyDemo

You can start your first spider with:
    cd scrapyDemo
    scrapy genspider example example.com

目录结构

scrapyDemo/
    scrapy.cfg            # 部署配置文件

    scrapyDemo/           # python模块
        __init__.py

        items.py          # 数据容器

        pipelines.py      # project pipelines file

        settings.py       # 配置文件

        spiders/          # Spider类定义了如何爬取某个(或某些)网站
            __init__.py

创建执行爬取的类ImoocSpider在 scrapyDemo/spiders

# -*- coding: utf-8 -*-
import scrapy
from urllib import parse as urlparse

# 慕课网爬取
class ImoocSpider(scrapy.Spider):
    # spider的名字定义了Scrapy如何定位(并初始化)spider,所以其必须是唯一的
    name = "imooc"

    # URL列表
    start_urls = ["http://www.imooc.com/course/list"]
    #  域名不在列表中的URL不会被爬取。
    allowed_domains = ["www.imooc.com"]

    def parse(self, response):        
        learn_nodes = response.css("a.course-card")
        for learn_node in learn_nodes :
            learn_url = learn_node.css("::attr(href)").extract_first()
            yield scrapy.Request(url=urlparse.urljoin(response.url,learn_url),callback=self.parse_learn)
        
    def parse_learn(self, response):
        title = response.xpath("//h2[@class="l"]/text()").extract_first()
        content = response.xpath("//div[@class="course-brief"]/p/text()").extract_first()
        url = response.url
        print ("标题:" + title)
        print ("地址:" + url)
开始爬取
F:	echleepythonscrapyDemo>scrapy crawl imooc

如果出现,则缺少win32api库,选择相应的版本

下载地址:https://sourceforge.net/proje...

import win32api
ModuleNotFoundError: No module named "win32api"
大功告成

看到如下输出,就说明爬取成功啦

F:	echleepythonscrapyDemo>scrapy crawl imooc
2017-10-17 14:28:32 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapyDemo)
……
2017-10-17 14:28:32 [scrapy.core.engine] INFO: Spider opened
2017-10-17 14:28:32 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-10-17 14:28:32 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2017-10-17 14:28:32 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: None)
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: None)
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:集成MultiDex项目实战
地址:http://www.imooc.com/learn/876
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:阿里D2前端技术论坛——2016初心
地址:http://www.imooc.com/learn/893
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:Hadoop进阶
地址:http://www.imooc.com/learn/890
标题:Javascript实现二叉树算法
地址:http://www.imooc.com/learn/888
2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:Fragment应用上
地址:http://www.imooc.com/learn/894
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:PHP-面向对象
地址:http://www.imooc.com/learn/887
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:Sketch的基础实例应用
地址:http://www.imooc.com/learn/900
标题:ElasticSearch入门
地址:http://www.imooc.com/learn/889
标题:使用Google Guice实现依赖注入
地址:http://www.imooc.com/learn/901
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:Docker入门
地址:http://www.imooc.com/learn/867
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:Android图表绘制之直方图
地址:http://www.imooc.com/learn/878
2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:UI版式设计
地址:http://www.imooc.com/learn/892
2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:RxJava与RxAndroid基础入门
地址:http://www.imooc.com/learn/877
标题:iOS开发之Audio特辑
地址:http://www.imooc.com/learn/886
2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:基于Websocket的火拼俄罗斯(基础)
地址:http://www.imooc.com/learn/861
2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: http://www.imooc.com/course/list)
标题:2017AWS 技术峰会——大数据技术专场
地址:http://www.imooc.com/learn/895
标题:基于websocket的火拼俄罗斯(单机版)
地址:http://www.imooc.com/learn/882

原文 https://www.tech1024.cn/origi...

保存数据到mysql数据库 https://www.tech1024.cn/origi...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40948.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 保存数据到MySql数据库——我用scrapy爬虫(二)

    摘要:坦克大战上简介上的坦克大战相信大家都玩过有逃学玩坦克的可以自己默默的扣一个了我们现在长大了,学习游戏开发了。 写在前面 上一篇(https://www.tech1024.cn/origi... )说了如何创建项目,并爬去网站内容,下面我们说一下如何保存爬去到的数据 开始爬取 创建Spider,上一篇我们已经创建了ImoocSpider,我们做一下修改,可以连续下一页爬取。scrapyD...

    Kross 评论0 收藏0
  • scrapy入门教程3:scrapy的shell命令

    摘要:用例运行爬虫命令基本语法是否需要项目存在当然是不需要咯貌似这个命令是不依托一个项目而直接运行一个爬虫的命令。用例我终于写完了,喜欢的就收藏推荐一下吧,这样我就会更有动力写新的教程了,哇哈哈 0. 基本环境说明 本文截图及运行环境均在Win8上实现(是的,我放假回家了,家里的机器是win8的没有办法),但基本步骤与win 7环境基本相同。(应该把~)ps:我后来换了台win7的电脑,所...

    zhongmeizhi 评论0 收藏0
  • 从零开始爬虫

    摘要:几个朋友对爬虫很感兴趣,他们也都是开发人员,一个开发两个开发,都没有过项目开发经验,正好其中一个最近要爬一个网店的产品信息,所以希望我能拿这网站当写一个爬虫来给他们参考学习。我们就在这个文件里开发爬虫的相关逻辑。 几个朋友对爬虫很感兴趣,他们也都是开发人员,一个PHP开发两个JAVA开发,都没有过python项目开发经验,正好其中一个最近要爬一个网店的产品信息,所以希望我能拿这网站当d...

    wwq0327 评论0 收藏0
  • Python3网络爬虫实战---10、爬虫框架的安装:PySpider、Scrapy

    摘要:所以如果对爬虫有一定基础,上手框架是一种好的选择。缺少包,使用安装即可缺少包,使用安装即可上一篇文章网络爬虫实战爬取相关库的安装的安装下一篇文章网络爬虫实战爬虫框架的安装 上一篇文章:Python3网络爬虫实战---9、APP爬取相关库的安装:Appium的安装下一篇文章:Python3网络爬虫实战---11、爬虫框架的安装:ScrapySplash、ScrapyRedis 我们直接...

    张宪坤 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<