内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Scrapy框架学习

2018-04-16 18:00 出处:清屏网 人气: 评论(0

1.前言

学习scrapy框架遇到了很多坑,安装各种少库,环境,变量,学习过程中遇到各种装逼文章,一段就可以搞定的写NM5-6行。(吐槽下)

2. Scrapy架构图 (来源网络)

request对象由spiders对象产生,

经由Scheduler传送到Downloader,

Downloader执行request并返回response给spiders。

具体 参考官方文档

3. 基本命令

scrapy startproject   xxx     创建项目名称

tree 查看目录结构

scrapy genspider  baidu “www.baidu.com”   创建爬虫程序(百度举例)

scrapy check xxx   执行爬虫名称

scrapy crawl  xxx   运行一个爬虫程序并且输才日志

scrapy crawl  xxx   --nolog   不输出日志

4. xpath语法

下面以div标签为例:

//div  表示查询某个标签的所有div标签
//div[@class='item_list']   表示找到所有的div下属性为class='item_list'的
//div[@class='item_list']/div  表示找到这个div的所有标签
//div[@class='item_list']//span  表示找在这个div下的所有span标签
//div[@class='item_list']//a/text()  表示找在这个div下的所有a标签并获得所有a标签的内容
//div[@class='item_list']//img/@src  表示找在这个div下的所有img标签并获得所有img标签的src属性

推荐工具

谷歌:xpath helper

firefox:WebDriver Element Locator

点我:  XPath教程

5. 导出文件

利用scrapy内置的Feed功能,我们可以非常方便的将爬虫数据导出为XML、JSON和CSV等格式的文件。要做的只需要在运行scrapy的时候用-o参数指定导出文件名即可。

scrapy crawl xxx  -o f.json
scrapy crawl xxx  -o f.csv
scrapy crawl xxx  -o f.xml

6.案例(21行代码爬虫新闻网站)

创建就不写了直接上代码

目标网站(http://hope.huanqiu.com/domesticnews/2.html)

爬取:连接, 标题,时间。

items.py

设置爬取名称(可任意设置)

import scrapy

class XwItem(scrapy.Item):

    name = scrapy.Field()        //名称
    connection = scrapy.Field()   //连接
    time = scrapy.Field()         //时间

huanqiu.py    (创建写爬虫)

# -*- coding: utf-8 -*-
import scrapy
from xw.items import XwItem
from scrapy.http import Request

class HuanqiuSpider(scrapy.Spider):
    name = 'huanqiu'
    allowed_domains = ['hope.huanqiu.com']
    start_urls = ['http://hope.huanqiu.com/domesticnews/2.html']

    def parse(self, response):
        xw = response.xpath('//div[@class="pad20"]/div/ul/li')     //先爬取网站里面所有新闻
                                                                  // 新闻名称时间标题全部在 div/ul/li 目录下

        

        for hq in xw:
        	item = XwItem()
        	item['name'] = hq.xpath('./a/@title').extract()[0]             //提取你需要的信息
        	item['connection'] = hq.xpath('./a/@href').extract()[0]
        	item['time'] = hq.xpath('./em').extract()[0]

        	yield item


//for循环下一页

        for x in range(1,10):
        	url = 'http://hope.huanqiu.com/domesticnews/2' + str(x) + '.html'
        	yield Request(url, callback=self.parse)

settings.py

FEED_EXPORT_ENCODING = 'utf-8'   //设置编码

ROBOTSTXT_OBEY = False   //设置不遵守robots.txt 的规则

使用方法

scrapy crawl  huanqiu -o ite.json   //保存在根目录下  ite.json 文件


分享给小伙伴们:
本文标签: Scrapy框架

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号