学习随笔--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())
原文地址:https://www.cnblogs.com/ToDoNow/p/9481958.html