zoukankan      html  css  js  c++  java
  • 学习随笔--scrapy爬虫简单实例

    一、运行F:AnacondaScriptsscrapy startproject scrapy_test生成scrapy项目的默认结构

    其中:

    crapy.cfg: 项目的配置文件。

    scrapy_test/: 该项目的python模块。之后您将在此加入代码。

    scrapy_test/items.py: 项目中的item文件。

    scrapy_test/pipelines.py: 项目中的pipelines文件。

    scrapy_test/settings.py: 项目的设置文件。

    scrapy_test/spiders/: 放置spider代码的目录

    二、在项目目录下执行scrapy genspider tablespider(爬虫名)www.apache.org(域名)生成spider.py爬虫文件

    三、设置Items.py

    Items是将要装载抓取的数据的容器,它工作方式像python里面的字典

    import scrapy
    class ScriptTestItem(scrapy.Item):
        name=scrapy.Field()
        url=scrapy.Field()
    

    四、spider代码

    Spider是我们的主爬虫类

    # -*- coding: utf-8 -*-
    import scrapy
    from scrapy.selector import HtmlXPathSelector
    from script_test.items import ScriptTestItem
    class TablespiderSpider(scrapy.Spider):
        name = 'tablespider'
        allowed_domains = ['www.apache.org']
        start_urls = ['http://www.apache.org/']
    
        # 在这里我们重写了start_requests函数
        # 从start_urls中读取链接,然后使用make_requests_from_url生成Request
        def start_requests(self):
            #将url改为http://www.apache.org/dist/
            self.start_urls[0]=self.start_urls[0]+'dist/'
            for url in self.start_urls:
                yield self.make_requests_from_url(url)
    
        # 生成了请求后,scrapy会帮我们处理Request请求,然后获得请求的url的网站的响应response,parse就可以用来处理response的内容
        def parse(self, response):
            hxs = HtmlXPathSelector(response)
            #每个select()调用返回一个selectors列表,所以我们可以结合select()去挖掘更深的节点
            links=hxs.select('//pre')
            items = []
            for link in links:
            #将抓取的数据存放到Item对象中
                item=ScriptTestItem()
                item['name']=link.select('a/text()').extract()
                item['url']=link.select('a/@href').extract()
                items.append(item)
            return items
    

      

    Scrapy 使用一种基于 XPath表达式的 XPath selectors机制

    XPathSelector 类:HtmlXPathSelector (HTML数据解析) 和XmlXPathSelector (XML数据解析)

    通过一个 Response 对象对他们进行实例化操作

    Selectors 有三种方法

    ·path():返回selectors列表, 每一个select表示一个xpath参数表达式选择的节点.

    ·extract():返回一个unicode字符串,该字符串为XPath选择器返回的数据

    ·re(): 返回unicode字符串列表,字符串作为参数由正则表达式提取出来

    五、begin.py

    在本项目中,若想要执行爬虫程序需要在命令行输入scrapy crawl tablespider

    为了方便使用,我们新建begin.py在项目跟目录上

    位置和内容如下

    #coding=utf-8
    from scrapy import cmdline
    cmdline.execute("scrapy crawl tablespider".split())
    
  • 相关阅读:
    编程的发展史及Python简介
    计算机的主要部件和组成
    编程二连
    数据库中的数据类型
    数据库概念和基本操作(mysql的操作)
    并发编程之协程
    并发编程之多线程
    网络编程之socket编程
    并发编程之多进程
    网络编程之网络协议
  • 原文地址:https://www.cnblogs.com/ToDoNow/p/9481958.html
Copyright © 2011-2022 走看看