Scrapy爬虫笔记——1

1、安装:使用pip install scrapy;

假如使用了Fiddler作为代理服务器进行调试分析,为了避免该软件的影响:

打开Fiddler,进入“Tools——>Fiddler Options——>Connections”,将“Act as system proxy on startup”和“Monitor all connections”的勾选取消。

2、(1)、使用命令“scrapy startproject 项目名”创建一个项目;

--logfile=FILE 参数指定日志文件,在startproject和项目名之间

--loglevel=LEVEL 主要控制日志信息的等级

从高到低依次为CRICAL(生严重的错误),ERROR(发生了必须立即处理的错误),WARNING(出现了一些警告信息,即存在潜在的错误),INFO(输出一些提示信息),DEBUG(输出一些调试信息,常用于开发阶段)

--nolog参数可以控制不输出日志信息

(2)、命令“cd 爬虫项目所在目录”,使用genspider命令创建Scrapy爬虫文件steve,定义爬取www.sina.com。

scrapy genspider -t basic steve www.sina.com

爬虫模版有:basic、crawl、csvfeed、xmlfeed。

3、项目目录结构:

scrapy.cfg 是爬虫项目的配置文件

items.py 爬虫项目的数据容器文件,定义我们获取的数据

pipelines.py 管道文件,对items中定义的数据进一步加工与处理

setting.py 设置文件

spider文件夹下放置爬虫部分文件

(1)在items中数据以字典形式储存

(2)spider中的常用属性和方法:

start_requests() 该方法默认读取start_urls属性中定义的网址,为每一个网址生成一个Request请求对象,并返回迭代对象

make_requests_from_url(url) 该方法会被start_requests() 调用,负责实现生成Request请求对象

closed(reason) 关闭Spider时,该方法被调用

3、Spider的编写

(1)、

#steve.py
import scrapy
from firstpjt.items import FirstpjtItem

class SteveSpider(scrapy.Spider):
    name = 'steve'
    allowed_domains = ['www.sina.com']
    start_urls = (
        'http://news.sina.com.cn/c/2018-08-12/doc-ihhqtawx1023013.shtml',
        'http://sports.sina.com.cn/basketball/nba/2018-08-12/doc-ihhqtawx1782775.shtml',
        'http://news.sina.com.cn/w/2018-08-12/doc-ihhqtawx0403181.shtml'
    )

    def parse(self, response):
        item = FirstpjtItem()
        item["urlname"]=response.xpath("/html/head/title/text()")
        print(item["urlname"])

运行结果:

(2)、start_urls为默认的起始网址,通过重写start_requests()方法实现自定义起始网址:

# steve.py
# -*- coding: utf-8 -*-
import scrapy

from firstpjt.items import FirstpjtItem


class SteveSpider(scrapy.Spider):
    name = 'steve'
    #allowed_domains = ['www.sina.com']
    start_urls = (
        'http://news.sina.com.cn/c/2018-08-12/doc-ihhqtawx1023013.shtml',
        'http://sports.sina.com.cn/basketball/nba/2018-08-12/doc-ihhqtawx1782775.shtml',
        'http://news.sina.com.cn/w/2018-08-12/doc-ihhqtawx0403181.shtml'
    )

    # 自定义起始网址
    urls2 = (
        'https://www.csdn.net/',
        'http://www.ifeng.com/',
        'https://www.suning.com/?utm_source=hao123&utm_medium=mingzhan'
    )

    # 重写start_requests()方法
    def start_requests(self):
        for url in self.urls2:
            # 调用默认self.make_requests_from_url(url)方法生成具体请求并通过yield返回
            yield self.make_requests_from_url(url)

    def parse(self, response):
        item = FirstpjtItem()
        item["urlname"] = response.xpath("/html/head/title/text()")
        print(item["urlname"])

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值