关于scrapy的安装以及初步入门

参考链接:https://blog.csdn.net/qq_41556318/article/details/85042006

以及小甲鱼视频

安装参考链接:https://blog.csdn.net/duanyajun987/article/details/81456203

一、安装

在ubuntu终端输入conda install scrapy(之前已经安装好anaconda)

中间提示 选择y

在终端输入 scrapy 验证是否安装成功

关于scrapy的安装以及初步入门_第1张图片

二、初步使用

使用 Scrapy抓取一个网站一共分为四个步骤:

–创建一个Scrapy项目;

–定义Item容器;

–编写爬虫;

–存储内容。

1、创建一个Scrapy项目

(base) alice@alice-X411UN:~/anaconda3$ cd /home/alice/python_homework
(base) alice@alice-X411UN:~/python_homework$ scrapy startproject tutorial


New Scrapy project 'tutorial', using template directory '/home/alice/anaconda3/lib/python3.7/site-packages/scrapy/templates/project', created in:
    /home/alice/python_homework/tutorial

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

生成如下文件夹相关布局如下:

关于scrapy的安装以及初步入门_第2张图片

tutorial/

    scrapy.cfg

    tutorial/

        __init__.py

        items.py

        pipelines.py

        settings.py

        spiders/

            __init__.py

            ...

scrapy.cfg 是项目的配置文件(暂时不用,保持默认即可)

tutorial 子文件夹 存放的是模块的代码,也是我们要填充的代码

items.py 是项目中的容器

2、定义 Item 容器

我们的任务就是 网页:http://www.dmozdir.org/Category/?SmallPath=230 和 http://www.dmozdir.org/Category/?SmallPath=411 这是两个个导航网页,我们的目标就是爬取各个标题以及其超链接和描述。我们就根据这三部分进行建模就可以了。
只需要在items.py文件里建立相应的字段。初次打开未经修改的内容如下:

# -*- coding: utf-8 -*-
 
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
 
import scrapy
 
 
class TutorialItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    pass

我们按照这个模板来定义其他的

class DmozItem(scrapy.Item):  #改个与项目对应的名字
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()   #标题
    link = scrapy.Field()   #超链接
    desc = scrapy.Field()  #描述

我们定义了title,link,desc(描述)

3、编写爬虫

(1)、我们需要在spider里面创建一个dmoz_spider.py的源文件

编写一个spider类,命名为DmozSpider,这里要求必须是继承 scray.Spider 类,首先需要有一个 name,name 这里必须是唯一的,用来确认你这只 蜘蛛 的名字dmoz。后期我们会指定是派出哪只蜘蛛工作

然后我们需要定义一个蜘蛛工作的范围。这里我们规定只能 爬取在 dmozdir.org/Category 网址里面,这样它在一个网址里面找到其他网页的链接,也不会跑过去了,它只会在这个域名里面去爬,要是没有规定这个的话,蜘蛛爬着爬着就回不来了。

以及我们从哪里开始爬取

(2)、我们接受response,然后对他进行分析处理

#dmoz_spider.py
import scrapy
 
class DmozSpider(scrapy.Spider):
        name = "dmoz"
        allowed_domains = ['dmozdir.org/Category']
        start_urls = ['http://www.dmozdir.org/Category/?SmallPath=230',
                      'http://www.dmozdir.org/Category/?SmallPath=411']
 
        def parse(self, response):
                filename = response.url.split('/')[-1][-3:]  #文件名为230和411
                with open(filename, 'wb') as f:
                        f.write(response.body)

这段代码完成了上面所说的,名字,范围已经分析,但是获取的整个网页的body

(3)、

首先你需要在CMD中进入项目的根目录(在前面我们已经进入了),输入:

scrapy shell "http://www.dmozdir.org/Category/?SmallPath=411"

回车,得到下面的内容:

#CMD窗口
C:\Users\XiangyangDai\Desktop\tutorial>scrapy shell "http://www.dmozdir.org/Category/?SmallPath=411"
2018-12-17 16:40:55 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: tutorial)
2018-12-17 16:40:55 [scrapy.utils.log] INFO: Versions: lxml 4.2.5.0, libxml2 2.9.5, cssselect 1.0.3, parsel 1.5.1, w3lib 1.19.0, Twisted 18.9.0, Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0j  20 Nov 2018), cryptography 2.4.2, Platform Windows-10-10.0.17134-SP0
2018-12-17 16:40:55 [scrapy.crawler] INFO: Overridden settings: {'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['tutorial.spiders'], 'LOGSTATS_INTERVAL': 0, 'BOT_NAME': 'tutorial', 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'NEWSPIDER_MODULE': 'tutorial.spiders'}
2018-12-17 16:40:55 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.corestats.CoreStats']
2018-12-17 16:40:55 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-12-17 16:40:55 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2018-12-17 16:40:55 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-12-17 16:40:55 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-12-17 16:40:55 [scrapy.core.engine] INFO: Spider opened
2018-12-17 16:40:56 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: None)
2018-12-17 16:40:56 [scrapy.core.engine] DEBUG: Crawled (200)  (referer: None)
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    
[s]   item       {}
[s]   request    
[s]   response   <200 http://www.dmozdir.org/Category/?SmallPath=411>
[s]   settings   
[s]   spider     
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser
In [1]:

此时我们得到了一个response,我们可以对他进行操作

#CMD窗口
In [1]: response.headers
Out[1]:
{b'Cache-Control': b'private',
 b'Content-Type': b'text/html; Charset=utf-8',
 b'Date': b'Mon, 17 Dec 2018 08:40:47 GMT',
 b'Server': b'Microsoft-IIS/6.0',
 b'Set-Cookie': b'ASPSESSIONIDCSBBCQBD=NMHNAMKDCBHDGNNAAGNKKBLM; path=/',
 b'Vary': b'Accept-Encoding',
 b'X-Powered-By': b'ASP.NET'}

可以获得网页的头

#CMD窗口
In [3]: response.body
Out[3]: b'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\xe5\xa9\x9a\xe6\x81\x8b\xe4\xba\xa4\xe5\x8f\x8b-\xe7\x94\x9f\xe6\xb4\xbb\xe4\xb8\x8e\xe6\x9c\x8d\xe5\x8a\xa1-\xe7\x9b\xae\xe5\xbd\x95\xe5\x88\x86\xe7\xb1\xbb-DMOZ\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\t\r\n\t
\r\n\t\t
\r\n\t\t\tDMOZ\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95-\xe5\x85\x8d\xe8\xb4\xb9\xe6\x94\xb6\xe5\xbd\x95\xe5\x90\x84\xe7\xb1\xbb\xe4\xbc\x98\xe7\xa7\x80\xe7\xbd\x91\xe7\xab\x99\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe7\x9b\xae\xe5\xbd\x95.\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t

DMOZ\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95-\xe5\x85\x8d\xe8\xb4\xb9\xe6\x94\xb6\xe5\xbd\x95\xe5\x90\x84\xe7\xb1\xbb\xe4\xbc\x98\xe7\xa7\x80\xe7\xbd\x91\xe7\xab\x99\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe7\x9b\xae\xe5\xbd\x95.

\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t\xe7\x9b\xae\xe5\xbd\x95\xe5\x88\x86\xe7\xb1\xbb\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\t\xe5\x9c\xb0\xe5\x8c\xba\xe5\x88\x86\xe7\xb1\xbb\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t
\r\n\t\t\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\xe6\x90\x9c\xe7\xb4\xa2\xe5\xb8\xae\xe5\x8a\xa9?\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
DMOZ\xe7\x9b\xae\xe5\xbd\x95\xe5\xbf\xab\xe9\x80\x9f\xe7\x99\xbb\xe5\xbd\x95\xe5\x85\xa5\xe5\x8f\xa3-\xe5\x85\x8d\xe8\xb4\xb9\xe6\x94\xb6\xe5\xbd\x95\xe5\x90\x84\xe7\xb1\xbb\xe4\xbc\x98\xe7\xa7\x80\xe7\xbd\x91\xe7\xab\x99\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe7\x9b\xae\xe5\xbd\x95.\xe7\x94\xb1\xe4\xba\xba\xe5\xb7\xa5\xe7\xbc\x96\xe8\xbe\x91,\xe5\xb9\xb6\xe6\x8f\x90\xe4\xbe\x9b\xe7\xbd\x91\xe7\xab\x99\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95\xe6\xa3\x80\xe7\xb4\xa2\xe5\x8f\x8a\xe5\x9c\xb0\xe5\x8c\xba\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95\xe6\xa3\x80\xe7\xb4\xa2,\xe6\x98\xaf\xe7\xab\x99\xe9\x95\xbf\xe5\x85\x8d\xe8\xb4\xb9\xe6\x8e\xa8\xe5\xb9\xbf\xe7\xbd\x91\xe7\xab\x99\xe7\x9a\x84\xe6\x9c\x89\xe5\x8a\x9b\xe5\xb9\xb3\xe5\x8f\xb0!
\r\n\t\t\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t

\xe7\x94\x9f\xe6\xb4\xbb\xe4\xb8\x8e\xe6\x9c\x8d\xe5\x8a\xa1 > \xe5\xa9\x9a\xe6\x81\x8b\xe4\xba\xa4\xe5\x8f\x8b

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t

\xe5\x90\x91\xe8\xaf\xa5\xe7\x9b\xae\xe5\xbd\x95\xe6\x8f\x90\xe4\xba\xa4\xe7\xbd\x91\xe7\xab\x99

\r\n\t\t\t\t\t
  • \xe5\xa4\xa9\xe5\x96\x9c\xe7\xbc\x98\xe5\xa9\x9a\xe4\xbb\x8b\xe7\xbd\x91-\xe6\x9c\x80\xe5\xa5\xbd\xe7\x9a\x84\xe5\xa9\x9a\xe5\xbe\x81\xe5\xa9\x9a\xe4\xbb\x8b\xe7\xbd\x91\xe7\xab\x99

    \xe5\xa4\xa9\xe5\x96\x9c\xe7\xbc\x98\xe5\xa9\x9a\xe4\xbb\x8b\xe5\xa9\x9a\xe5\xba\x86\xe7\xbd\x91\xe6\x98\xaf\xe6\xb5\x8e\xe5\x8d\x97\xe6\x9c\x80\xe4\xb8\x93\xe4\xb8\x9a\xe7\x9a\x84\xe5\xa9\x9a\xe4\xbb\x8b\xe7\xbd\x91\xe7\xab\x99\xe3\x80\x81\xe5\xa9\x9a\xe5\xba\x86\xe7\xbd\x91\xe7\xab\x99\xef\xbc\x8c\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xef\xbc\x8c\xe5\x8f\x8a\xe6\xb5\x8e\xe5\x8d\x97\xe5\xbe\x81\xe5\xa9\x9a\xe3\x80\x81\xe6\xb5\x8e\xe5\x8d\x97\xe4\xba\xa4\xe5\x8f\x8b\xe3\x80\x81\xe6\xb5\x8e\xe5\x8d\x97\xe5\xa9\x9a\xe4\xbb\x8b\xe3\x80\x81\xe6\xb5\x8e\xe5\x8d\x97\xe5\xba\x86\xe5\x85\xb8\xe3\x80\x81\xe6\xb5\x8e\xe5\x8d\x97\xe7\xa4\xbc\xe4\xbb\xaa\xe4\xba\x8e\xe4\xb8\x80\xe4\xbd\x93\xef\xbc\x8c\xe7\xbd\x91\xe4\xb8\x8b\xe6\x9c\x89\xe5\xae\x9e\xe4\xbd\x93\xe5\xba\x97\xe9\x9d\xa2-\xe6\xb5\x8e\xe5\x8d\x97\xe5\xb8\x82\xe5\xb8\x82\xe4\xb8\xad\xe5\x8c\xba\xe5\xa4\xa9\xe5\x96\x9c\xe7\xbc\x98\xe5\xa9\x9a\xe4\xbb\x8b\xe5\xa9\x9a\xe5\xba\x86\xe4\xb8\xad\xe5\xbf\x83\xef\xbc\x8c\xe4\xb8\x8d\xe5\xae\x9a\xe6\x9c\x9f\xe4\xb8\xbe\xe5\x8a\x9e\xe8\x81\x94\xe8\xb0\x8a\xe6\xb4\xbb\xe5\x8a\xa8\xef\xbc\x8c\xe4\xbf\x9d\xe8\xaf\x81\xe4\xbc\x9a\xe5\x91\x98\xe6\x88\x90\xe5\x8a\x9f\xe7\x8e\x87

    www.love219.com
  • \xe6\x88\x90\xe9\x83\xbd\xe7\x9b\x9b\xe4\xb8\x96\xe9\x98\xb3\xe5\x85\x89\xe5\xa9\x9a\xe5\xba\x86\xe7\xad\x96\xe5\x88\x92\xe6\x9c\x89\xe9\x99\x90\xe5\x85\xac\xe5\x8f\xb8

    \xe8\xaf\x9a\xe4\xbf\xa1\xe6\x8a\x95\xe8\xb5\x84\xe6\x8e\xa7\xe8\x82\xa1\xe9\x9b\x86\xe5\x9b\xa2\xe5\xb1\x9e\xe4\xba\x8e\xe5\x9b\x9b\xe5\xb7\x9d\xe7\x9c\x81\xe5\xa4\xa7\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe9\x9b\x86\xe5\x9b\xa2\xef\xbc\x8c\xe5\xb7\x9d\xe5\x86\x85\xe6\x8e\x92\xe4\xba\x8e\xe5\x89\x8d20\xe5\x90\x8d\xef\xbc\x8c\xe6\xb3\xa8\xe5\x86\x8c\xe8\xb5\x84\xe9\x87\x913.5\xe4\xba\xbf\xe5\x85\x83\xef\xbc\x8c\xe6\x8b\xa5\xe6\x9c\x89\xe5\x9b\xba\xe5\xae\x9a\xe8\xb5\x84\xe4\xba\xa746.5\xe4\xba\xbf\xe3\x80\x82\xe5\x85\xac\xe5\x8f\xb8\xe6\x80\xbb\xe9\x83\xa8\xe4\xbd\x8d\xe4\xba\x8e\xe6\x88\x90\xe9\x83\xbd\xe5\xb8\x82\xe8\x87\xb4\xe6\xb0\x91\xe4\xb8\x9c\xe8\xb7\xaf1\xe5\x8f\xb7\xe3\x80\x82\xe5\x9c\xa8\xe5\x8c\x97\xe4\xba\xac\xe3\x80\x81\xe4\xb8\x8a\xe6\xb5\xb7\xe3\x80\x81\xe6\x96\xb0\xe7\x96\x86\xe7\xad\x89\xe5\x9c\xb0\xe8\xae\xbe\xe6\x9c\x89\xe5\x88\x86\xe5\x85\xac\xe5\x8f\xb8\xe3\x80\x82\xe8\xaf\x9a\xe4\xbf\xa1\xe7\x9b\x9b\xe4\xb8\x96\xe9\x98\xb3\xe5\x85\x89\xe5\xa9\x9a\xe5\xba\x86\xe5\x85\xac\xe5\x8f\xb8\xe6\x98\xaf\xe5\x85\xb6\xe5\xad\x90\xe5\x85\xac\xe5\x8f\xb8\xe3\x80\x82

    www.ssyg520.com
  • \xe6\x83\x85\xe4\xba\xba\xe7\xbd\x91

    \xe6\x83\x85\xe4\xba\xba\xe7\xbd\x91\xe4\xba\xa4\xe5\x8f\x8b\xe4\xb8\xad\xe5\xbf\x83\xe4\xb8\xba\xe4\xbd\xa0\xe6\x8f\x90\xe4\xbe\x9b\xe6\x9c\x80\xe4\xbd\xb3\xe7\x9a\x84\xe7\xbd\x91\xe4\xb8\x8a\xe6\x83\x85\xe4\xba\xba\xe4\xba\xa4\xe5\x8f\x8b\xe6\x9c\xba\xe4\xbc\x9a\xef\xbc\x8c\xe8\xb6\xb3\xe4\xb8\x8d\xe5\x87\xba\xe6\x88\xb7\xe4\xbe\xbf\xe8\x83\xbd\xe8\xae\xa9\xe4\xbd\xa0\xe6\x9c\x89\xe6\x9b\xb4\xe5\xa4\x9a\xe7\x9a\x84\xe9\x80\x89\xe6\x8b\xa9\xef\xbc\x81

    www.591lover.net
  • \xe5\x9b\xbd\xe9\x99\x85\xe5\x85\x8d\xe8\xb4\xb9\xe5\xa9\x9a\xe4\xbb\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99-\xe7\x9b\xb8\xe7\xba\xa6100

    \xe5\x9b\xbd\xe9\x99\x85\xe5\x85\x8d\xe8\xb4\xb9\xe5\xa9\x9a\xe4\xbb\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xe6\x98\xaf\xe7\x9b\xb8\xe7\xba\xa6100\xe6\x8f\x90\xe4\xbe\x9b\xe7\x9a\x84\xe5\xae\x8c\xe5\x85\xa8\xe5\x85\x8d\xe8\xb4\xb9\xe7\x9a\x84\xe5\x9b\xbd\xe9\x99\x85\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xe3\x80\x82\xe4\xbc\x9a\xe5\x91\x98\xe4\xbb\xa5\xe5\x8d\x8e\xe4\xba\xba\xe4\xb8\xba\xe4\xb8\xbb\xe9\x81\x8d\xe5\xb8\x83\xe4\xba\x94\xe6\xb9\x96\xe5\x9b\x9b\xe6\xb5\xb7,\xe6\x89\x80\xe6\x9c\x89\xe4\xbc\x9a\xe5\x91\x98\xe5\xae\x8c\xe5\x85\xa8\xe5\x85\x8d\xe8\xb4\xb9\xe3\x80\x82\xe6\x89\x80\xe6\x9c\x89\xe5\xaf\xbb\xe6\x89\xbe\xe5\x9b\xbd\xe9\x99\x85\xe5\x85\x8d\xe8\xb4\xb9\xe5\xa9\x9a\xe4\xbb\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xe7\x9a\x84\xe6\x9c\x8b\xe5\x8f\x8b\xe9\x83\xbd\xe8\x83\xbd\xe5\x9c\xa8\xe5\x9b\xbd\xe9\x99\x85\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xe5\x9c\xa8\xe6\x89\xbe\xe5\x88\xb0\xe5\xae\x8c\xe5\x85\xa8\xe5\x85\x8d\xe8\xb4\xb9\xe7\x9a\x84\xe5\x9b\xbd\xe9\x99\x85\xe5\x85\x8d\xe8\xb4\xb9\xe5\xa9\x9a\xe4\xbb\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xe6\x9c\x8d\xe5\x8a\xa1

    www.free-onlinedating.me
  • \xe5\xae\x89\xe5\xbe\xbd\xe5\xa9\x9a\xe5\xba\x86\xe7\xbd\x91

    \xe5\xae\x89\xe5\xbe\xbd\xe5\xa9\x9a\xe5\xba\x86\xe7\xbd\x91

    www.ahhqw.com
  • \xe8\x81\x9a\xe7\xbc\x98\xe5\x8c\x97\xe6\xb5\xb7\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91

    \xe8\x81\x9a\xe7\xbc\x98\xe5\x8c\x97\xe6\xb5\xb7\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe6\x98\xaf\xe5\x8c\x97\xe6\xb5\xb7\xe5\x9c\xb0\xe5\x8c\xba\xe8\xbe\x83\xe8\xa7\x84\xe8\x8c\x83\xe7\x9a\x84\xe5\xa9\x9a\xe6\x81\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91\xe7\xab\x99\xef\xbc\x8c\xe8\x87\xb4\xe5\x8a\x9b\xe4\xba\x8e\xe8\x90\xa5\xe9\x80\xa0\xe6\x9c\x89\xe8\xb6\xa3\xe8\x80\x8c\xe5\xae\x89\xe5\x85\xa8\xe7\x9a\x84\xe7\xbd\x91\xe7\xbb\x9c\xe4\xba\xa4\xe5\x8f\x8b\xe7\xa4\xbe\xe5\x8c\xba\xef\xbc\x8c\xe6\x8f\x90\xe4\xbe\x9b\xe6\x90\x9c\xe7\xb4\xa2\xe3\x80\x81\xe7\xbe\x8e\xe6\x96\x87\xe3\x80\x81\xe7\xba\xa6\xe4\xbc\x9a\xe3\x80\x81\xe6\x97\xa5\xe8\xae\xb0\xe3\x80\x81\xe8\x81\x8a\xe5\xa4\xa9\xe3\x80\x81\xe7\xad\x89\xe5\xa4\x9a\xe9\xa1\xb9\xe4\xba\xa4\xe5\x8f\x8b\xe6\x9c\x8d\xe5\x8a\xa1\xe3\x80\x82\xe5\xb9\xb6\xe4\xb8\x8e\xe5\x9c\xb0\xe6\x96\xb9\xe5\xa9\x9a\xe4\xbb\x8b\xe9\x83\xa8\xe9\x97\xa8\xe5\xbb\xba\xe7\xab\x8b\xe4\xba\x86\xe8\x89\xaf\xe5\xa5\xbd\xe7\x9a\x84\xe5\x90\x88\xe4\xbd\x9c\xe5\x85\xb3\xe7\xb3\xbb\xe3\x80\x82

    www.jyjjyy.com
  • \xe7\x88\xb1\xe6\x88\x91\xe5\x90\xa7\xe5\xa9\x9a\xe6\x81\x8b\xe7\xbd\x91

    \xe7\x88\xb1\xe6\x88\x91\xe5\x90\xa7\xe5\xa9\x9a\xe6\x81\x8b\xe7\xbd\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe7\x9c\x9f\xe5\xae\x9e\xe3\x80\x81\xe4\xb8\xa5\xe8\x82\x83\xe3\x80\x81\xe9\xab\x98\xe5\x93\x81\xe4\xbd\x8d\xe7\x9a\x84\xe5\xa9\x9a\xe6\x81\x8b\xe5\xb9\xb3\xe5\x8f\xb0\xef\xbc\x8c\xe6\x8f\x90\xe4\xbe\x9b\xe7\xa7\x91\xe5\xad\xa6\xe3\x80\x81\xe9\xab\x98\xe6\x95\x88\xe7\x9a\x84\xe5\x85\xa8\xe7\xa8\x8b\xe6\x9c\x8d\xe5\x8a\xa1\xef\xbc\x8c\xe5\xb8\xae\xe5\x8a\xa9\xe7\x9c\x9f\xe5\xbf\x83\xe5\xaf\xbb\xe6\x89\xbe\xe7\xbb\x88\xe8\xba\xab\xe4\xbc\xb4\xe4\xbe\xa3\xe7\x9a\x84\xe4\xba\xba\xe5\xa3\xab\xe5\xae\x9e\xe7\x8e\xb0\xe5\x92\x8c\xe8\xb0\x90\xe5\xa9\x9a\xe6\x81\x8b\xef\xbc\x8c\xe5\x8a\xaa\xe5\x8a\x9b\xe8\x90\xa5\xe9\x80\xa0\xe5\x9b\xbd\xe5\x86\x85\xe6\x9c\x80\xe4\xb8\x93\xe4\xb8\x9a\xe3\x80\x81\xe4\xb8\xa5\xe8\x82\x83\xe7\x9a\x84\xe5\xa9\x9a\xe6\x81\x8b\xe4\xba\xa4\xe5\x8f\x8b\xe5\xb9\xb3

    www.lovemeba.com
  • 77\xe5\x9b\xbd\xe9\x99\x85\xe4\xba\xa4\xe5\x8f\x8b\xe7\xbd\x91

    \xe7\xba\xaf\xe5\x85\xac\xe7\x9b\x8a\xe6\x80\xa7\xef\xbc\x8c\xe7\x88\xb1\xe5\xbf\x83\xe7\xa4\xbe\xe4\xba\xa4\xe7\xbd\x91\xe7\xab\x99\xef\xbc\x8c\xe4\xb8\xba\xe5\xb9\xbf\xe5\xa4\xa7\xe9\x9d\x92\xe5\xb9\xb4\xe5\x8f\x8a\xe5\x8d\x95\xe8\xba\xab\xe4\xba\xba\xe5\xa3\xab\xe6\x8f\x90\xe4\xbe\x9b\xe7\x9a\x84\xe5\x85\xa8\xe5\x85\x8d\xe8\xb4\xb9\xe4\xba\xa4\xe5\x8f\x8b\xe5\xb9\xb3\xe5\x8f\xb0\xe3\x80\x82

    www.77lds.com
  • \xe4\xb8\x9c\xe8\x8e\x9e\xe9\x9f\xa9\xe9\xa3\x8e\xe5\xb0\x9a\xe5\xa9\x9a\xe7\xba\xb1\xe6\x91\x84\xe5\xbd\xb1\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4

    \xe4\xb8\x9c\xe8\x8e\x9e\xe9\x9f\xa9\xe9\xa3\x8e\xe5\xb0\x9a\xe5\xa9\x9a\xe7\xba\xb1\xe6\x91\x84\xe5\xbd\xb1\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4\xe6\x98\xaf\xe5\x85\xb7\xe6\x9c\x89\xe7\x8b\xac\xe7\x89\xb9\xe7\x9a\x84\xe9\x9f\xa9\xe5\x9b\xbd\xe9\xa3\x8e\xe6\xa0\xbc\xe7\x9a\x84\xe4\xb8\x9c\xe8\x8e\x9e\xe5\xa9\x9a\xe7\xba\xb1\xe6\x91\x84\xe5\xbd\xb1\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4\xef\xbc\x8c\xe9\x9f\xa9\xe9\xa3\x8e\xe5\xb0\x9a\xe4\xbd\x8d\xe4\xba\x8e\xe4\xb8\x9c\xe8\x8e\x9e\xe4\xb8\x9c\xe5\x9f\x8e\xe5\x8c\xba\xe6\x97\x97\xe5\xb3\xb0\xe8\xb7\xaf\xe5\x9b\xbd\xe6\xb3\xb0\xe5\xa4\xa7\xe5\x8e\xa610\xe5\x8f\xb7,\xe6\x88\x91\xe4\xbb\xac\xe6\xb0\xb8\xe8\xbf\x9c\xe6\xbb\xa1\xe6\x80\x80\xe5\x88\x9b\xe6\x84\x8f\xe4\xb8\x8e\xe6\xb8\xa9\xe6\x83\x85,\xe9\x80\x9a\xe8\xbf\x87\xe4\xb8\x80\xe5\xaf\xb9\xe4\xb8\x80\xe7\x9a\x84\xe6\x9c\x8d\xe5\x8a\xa1\xe4\xb8\xba\xe6\x82\xa8\xe6\x8f\x90\xe4\xbe\x9b\xe8\xb6\x85\xe8\xb6\x8a\xe6\x82\xa8\xe6\x9c\x9f\xe6\x9c\x9b

    www.dg-hfs.com
  • \xe7\x99\xbe\xe5\x90\x88\xe5\xa9\x9a\xe7\xa4\xbc\xe7\xa4\xbe\xe5\x8c\xba

    \xe7\x99\xbe\xe5\x90\x88\xe5\xa9\x9a\xe7\xa4\xbc\xe7\xa4\xbe\xe5\x8c\xba\xe8\xae\xa8\xe8\xae\xba\xe8\xaf\x9d\xe9\xa2\x98\xe6\xb6\xb5\xe7\x9b\x96\xe5\xa9\x9a\xe7\xba\xb1\xe7\x85\xa7\xe3\x80\x81\xe5\xa9\x9a\xe7\xba\xb1\xe6\x91\x84\xe5\xbd\xb1\xe3\x80\x81\xe5\xa9\x9a\xe7\xa4\xbc\xe7\xad\xb9\xe5\xa4\x87\xe3\x80\x81\xe5\xa9\x9a\xe7\xba\xb1\xe7\xa4\xbc\xe6\x9c\x8d\xe3\x80\x81\xe5\xa9\x9a\xe5\xba\x86\xe7\xad\x89\xe6\x96\xb9\xe9\x9d\xa2

    www.lilywed.cn
\r\n
\r\n\t
\r\n\t\t123456789>>|\r\n\t
\r\n\t
\r\n\t\t176\xe8\xae\xb0\xe5\xbd\x95\xe3\x80\x80\xe6\xaf\x8f\xe9\xa1\xb510\xe6\x9d\xa1\r\n\t
\r\n
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\t\r\n\r\n\t\t\r\n\r\n\t
\r\n\t\r\n\r\n\r\n\t\r\n

© 2009 DmozDir \xe5\x86\x80ICP\xe5\xa4\x8708100951\xe5\x8f\xb7 DMOZ\xe7\x9b\xae\xe5\xbd\x95\xe5\xbf\xab\xe9\x80\x9f\xe7\x99\xbb\xe5\xbd\x95\xe5\x85\xa5\xe5\x8f\xa3\r\n\t\t

\xe7\xbd\x91\xe7\xab\x99\xe5\x85\x8d\xe8\xb4\xb9\xe7\x99\xbb\xe5\xbd\x95\xef\xbc\x8c\xe6\x96\xb0\xe6\x94\xb6\xe5\xbd\x95\xe7\xbd\x91\xe7\xab\x99\xe9\xa6\x96\xe9\xa1\xb5\xe6\x98\xbe\xe7\xa4\xba\xef\xbc\x8c\xe6\x89\x80\xe6\x9c\x89\xe6\x8e\x92\xe5\x90\x8d\xe5\x85\xa8\xe8\x87\xaa\xe5\x8a\xa8\xe5\xae\x9e\xe6\x97\xb6\xe5\x88\xb7\xe6\x9b\xb4\xe6\x96\xb0\xef\xbc\x8c\xe7\xbd\x91\xe7\xab\x99\xe6\x8e\xa8\xe5\xb9\xbf\xe7\x9a\x84\xe6\x9c\x80\xe4\xbd\xb3\xe9\x80\x89\xe6\x8b\xa9\xe5\xb0\xb1\xe5\x9c\xa8DMOZ\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe7\xab\x99\xe5\x88\x86\xe7\xb1\xbb\xe7\x9b\xae\xe5\xbd\x95

\r\n
\r\n\r\n\r\n\r\n\r\n\r\n'

可以获得网页的源代码,但是由于是二进制的,所以我们可以对他进行编码

#CMD窗口
In [5]: response.body.decode('utf-8')
Out[5]: '\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n婚恋交友-生活与服务-目录分类-DMOZ中文网站分类目录\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\t\r\n\t
\r\n\t\t
\r\n\t\t\tDMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t

DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.

\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t目录分类\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\t地区分类\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t
\r\n\t\t\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t搜索帮助?\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!
\r\n\t\t\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t

生活与服务 > 婚恋交友

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t

向该目录提交网站

\r\n\t\t\t\t\t
  • 天喜缘婚介网-最好的婚征婚介网站

    天喜缘婚介婚庆网是济南最专业的婚介网站、婚庆网站,交友网站,及济南征婚、济南交友、济南婚介、济南庆典、济南礼仪于一体,网下有实体店面-济南市市中区天喜缘婚介婚庆中心,不定期举办联谊活动,保证会员成功率

    www.love219.com
  • 成都盛世阳光婚庆策划有限公司

    诚信投资控股集团属于四川省大型企业集团,川内排于前20名,注册资金3.5亿元,拥有固定资产46.5亿。 公司总部位于成都市致民东路1号。在北京、上海、新疆等地设有分公司。诚信盛世阳光婚庆公司是其子公司。

    www.ssyg520.com
  • 情人网

    情人网交友 中心为你提供最佳的网上情人交友机会,足不出户便能让你有更多的选择!

    www.591lover.net
  • 国际免费婚介交友网站-相约100

    国际免费婚介交友网站是相约100提供的完全免费的国际交友网站。会员以华人为主遍布五湖四海,所有会员完全免费。所有寻找国际免费婚介交友网站的朋 友都能在国际交友网站在找到完全免费的国际免费婚介交友网站服务

    www.free-onlinedating.me
  • 安徽婚庆网

    安徽婚庆网

    www.ahhqw.com
  • 聚缘北海交友网

    聚缘北海交友网是北海地区较规范的婚恋交友网站,致力于营造有趣而安全的网络交友社区,提供搜索、美文、约会、日记、聊天、等多项交友服务。并与地方婚介部门建立了良好的合作关系。

    www.jyjjyy.com
  • 爱我吧婚恋网

    爱我吧婚恋网是一个真实、严肃、高品位的婚恋平台,提供科学、高效的全程服务,帮助真心寻找终身伴侣的人士实现和谐婚恋,努力营造国内最专业、严肃的婚恋交友平

    www.lovemeba.com
  • 77国际交友网

    纯公益性,爱心社交网站,为广大青年及单身人士提供的全免费交友平台。

    www.77lds.com
  • 东莞韩风尚婚纱摄影工作室

    东莞韩风尚婚纱摄影工作室是具有独特的韩国风格的东莞婚纱摄影工作室,韩风尚位于东莞东城区旗峰路国泰大厦10号,我们永远满怀创意与温情,通过一对一的服务为您提供超越您期望

    www.dg-hfs.com
  • 百合婚礼社区

    百合婚礼社区讨论话题涵盖婚纱照、婚纱摄影、婚礼筹备、婚纱礼服、婚庆等方面

    www.lilywed.cn
\r\n
\r\n\t
\r\n\t\t123456789>>|\r\n\t
\r\n\t
\r\n\t\t176记录\u3000每页10\r\n\t
\r\n
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\t\r\n\r\n\t\t\r\n\r\n\t
\r\n\t\r\n\r\n\r\n\t\r\n

© 2009 DmozDir 冀ICP备08100951号 DMOZ目录快速登录入口\r\n\t\t

网站免费登录,新收 录网站首页显示,所有排名全自动实时刷更新,网站推广的最佳选择就在DMOZ中文网站分类目录

\r\n
\r\n\r\n\r\n\r\n\r\n\r\n'

但是,我们只想得到title,desc,link这几个参量的,所以要进行筛选

selector 选择器就是这么一个筛子,正如我们刚才所讲到的,可以使用 response.selector.xpath() 或者 response.selector.css() 或者  response.selector.extract() 或者 response.selector.re() 这四个基本方法来进行筛选。
这次我们研究的是xpath()。这其实也是一个取的过程。

最后改成的spider的程序如下,相关解释已经在程序中有注释

关于scrapy的安装以及初步入门_第3张图片

import scrapy
class DmozSpider(scrapy.Spider):
     name="dmoz"
     allowed_domains=['dmozdir.org/Category']#确定要爬取的范围
     start_urls=['http://www.dmozdir.org/Category/?SmallPath=230']#确定要爬取的开始网页
                 # 'http://www.dmozdir.org/Category/?SmallPath=411']

     def parse(self,response):
         titles=response.selector.xpath('//ul/li/h4/a/text()').extract()
         #直接使用title,返回的是一个selector对象的列表
         # 加上extract将列表给字符串化,所以提取出来只有想要的那部分的标签和信息
         #加上text就只提取文字部分,不要标签

         links=response.selector.xpath('//ul/li/h4/a/@href').extract()
         #因为是一个链接所以要加上@
         decss=response.selector.xpath('//ul/li/p/text()').extract()
         if len(titles)==len(links)==len(decss):
             for i in range(len(titles)):
                 print(titles[i],links[i],decss[i])

这样我们就把title,link,decs打印出来了

接下来我们使用items就是我们自定义的容器,所以在dmoz_spider.py中写道:

from turtorial.items import DmozItem

#dmoz_spider.py
import scrapy
from tutorial.items import DmozItem
 
class DmozSpider(scrapy.Spider):
        name = "dmoz"
        allowed_domains = ['dmozdir.org/Category']
        start_urls = ['http://www.dmozdir.org/Category/?SmallPath=230',
                      'http://www.dmozdir.org/Category/?SmallPath=411']
 
        def parse(self, response):
                titles = response.selector.xpath('//ul/li/h4/a/text()').extract()  #标题 title
                links = response.selector.xpath('//ul/li/h4/a/@href').extract()  #超链接 link
                descs = response.selector.xpath('//ul/li/p/text()').extract()   #描述 desc
                items = []
                if len(titles) == len(links) == len(descs):
                        for i in range(len(titles)):
                                #print(titles[i], links[i], decss[i])
                                item = DmozItem()
                                #每一组保存为一个字典
                                item['title'] = titles[i]
                                item['link'] = links[i]
                                item['desc'] = descs[i]
                                #将每个字典添加到列表中
                                items.append(item)
                        return items

然后在cmd中,tutorial的根目录下,执行目录scrapy crawl dmoz -o items.json -t json

-o 文件名 -t 保存形式。

在 tutorial 根目录 下就会有一个名为 items.json 的文件

但是我们会发现产生的items.json是二进制文件

pipeline.py是用于处理item的,所以在pipeline.py中对保存的文件进行处理:

# -*- coding: utf-8 -*-
 
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
 
import json
 
class TutorialPipeline(object):
    def __init__(self):
        self.f = open('items.json', 'wb')
    def process_item(self, item, spider):
        line = json.dumps(dict(item), ensure_ascii = False) + "\n"
        self.f.write(line.encode('utf-8'))#这里对他进行解码
        return item
    def close_spider(self, spider):
        self.f.close()

因为读取到的网页是二进制文件,所以我们在__init__方法中,建一个名为items.json

的文件,以二进制形式写入

在process_item方法中,对item文件进行解码写入操作,最后在close_spider方法中,关闭文件

接下来,就在settings.py 文件中开启 pipeline,加入下面的命令即可:

ITEM_PIPELINES = {
    'tutorial.pipelines.TutorialPipeline': 300,
}

其中,TutorialPipeline 就是 pipeline.py 文件中的 类名

因为我们在 pipeline.py 中完成了新建文件的操作,所以 在CMD 中输入的命令 应该改为:scrapy crawl dmoz -t json

这个我们得到的json文件里面就会出现文字啦

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(关于scrapy的安装以及初步入门)