scrapy 笔记(1)

作者: kolaman | 来源:发表于2015-04-19 23:51 被阅读759次

1.创建scrapy项目:

scrapy startproject my_scrapy_project

创建后的目录结构

    |-- my_scrapy_project
    |   |-- __init__.py
    |   |-- items.py
    |   |-- pipelines.py
    |   |-- settings.py
    |   `-- spiders
    |       `-- __init__.py
     `-- scrapy.cfg
  • scrapy.cfg: 项目的配置文件
  • my_scrapy_project/: 该项目的python模块。之后您将在此加入代码。
  • my_scrapy_project/items.py: 项目中的item文件.
  • my_scrapy_project/pipelines.py: 项目中的pipelines文件.
  • my_scrapy_project/settings.py: 项目的设置文件.
  • my_scrapy_project/spiders/: 放置spider代码的目录.

2.通过 xpath 提取数据

import scrapy
    class DmozSpider(scrapy.Spider):
        name = "dmoz"
        allowed_domains = ["dmoz.org"]
        start_urls = [
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
        ]
    def parse(self, response):
            filename = response.url.split("/")[-2]
            with open(filename, "wb") as f:
                for sel in response.xpath('//ul/li'):
                    title = sel.xpath('a/text()').extract()
                    link = sel.xpath('a/@href').extract()
                    desc = sel.xpath('text()').extract()
                    print title, link, desc
                    f.writelines(str(title))
                    f.writelines(str(link))
                    f.writelines(str(desc)+'\n')
  • 写出结果:
  • [u'Top'][u'/'][u'\r\n\r\n ']
  • [u'Computers'][u'/Computers/'][]
  • [u'Programming'][u'/Computers/Programming/'][]
  • [u'Languages'][u'/Computers/Programming/Languages/'][]
  • [u'Python'][u'/Computers/Programming/Languages/Python/'][]
  1. /html/head/title: 选择HTML文档中 <head> 标签内的 <title> 元素
  2. /html/head/title/text(): 选择上面提到的 <title> 元素的文字
  3. //td: 选择所有的 <td> 元素
  4. //div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素
name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

3.使用item,json

首先定义item.py:

import scrapy
class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

然后修改parse方法:

 def parse(self, response):
    for sel in response.xpath('//ul/li'):
        item = DmozItem()
        item['title'] = sel.xpath('a/text()').extract()
        item['link'] = sel.xpath('a/@href').extract()
        item['desc'] = sel.xpath('text()').extract()
        yield item

最后,将所爬到的数据保存为json格式:

scrapy crawl dmoz -o items.json

相关文章

  • scrapy笔记

    1 scrapy的运行原理 参考:Learning Scrapy笔记(三)- Scrapy基础Scrapy爬虫入门...

  • scrapy学习笔记(有示例版)

    scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...

  • scrapy爬虫折腾系列-02

    Scrapy折腾系列-02 1、笔记 response是一个scrapy.http.response.html.H...

  • Scrapy笔记

    Scrapy笔记 安装scrapy框架: 安装scrapy:通过pip install scrapy即可安装。 如...

  • Scrapy笔记

    Scrapy笔记 pip 指定源安装模块 创建Scrapy项目 创建Scrapy爬虫程序 启动Scrapy爬虫 在...

  • scrapy 笔记(1)

    1.创建scrapy项目: 创建后的目录结构 scrapy.cfg: 项目的配置文件 my_scrapy_proj...

  • 2018-08-12

    Scrapy学习 《精通Scrapy网络爬虫》第八章--仅作为本人学习笔记,如有侵权,请私信我删除 1、项目需求 ...

  • Scrapy学习笔记(1)

    要学习自然语言处理,必须要有的就是语料库(corpus),除了公开的语料库以外,如果要对特定的内容进行分析,就需要...

  • scrapy笔记(1) - 安装

    安装 Linux: 使用pip安装 命令:pip install scrapy Windows 从 http://...

  • 初识scrapy

    学习scrapy笔记链接:https://pan.baidu.com/s/1NLpLEk2cv8QbssFV-Pz...

网友评论

    本文标题:scrapy 笔记(1)

    本文链接:https://www.haomeiwen.com/subject/uzgyfttx.html