爬虫实战练习3:使用Scrapy框架(循环抓取腾讯网的新闻)

首先执行命令pip install Scrapy进行安装。请求超时,多试几次或者换成国内的源。如果还装不上,装下老版本:pip install scrapy==1.5.1

制作Scrapy爬虫有以下几个步骤:

  • (1)创建项目

在想创建项目的目录下输入cmd,然后执行命令:scrapy startproject TencentNews(表示项目名称)
创建完成之后,TencentNews项目的目录如下:
在这里插入图片描述

  • items.py
    用来定义变量,变量用于存储从网页提取的数据(即明确你想要抓取的目标 )
  • pipelines.py
    主要是把你从网页提取出来的数据,存储到item之后,后续把这些变量数据进行存储(可以存储在文本文件或者excel文件或者数据库)
  • setting.py
    (a)注释掉下面的三句代码,表示指定抓取的优先级(默认是注释的,需要取消注释)
#ITEM_PIPELINES = {
   

#    'project1.pipelines.Project1Pipeline': 300,

#}

(b)下面表示设定抓取的并发量,默认的16,不需要取消注释(如果要改成其他的并发量,需要取消注释)

# The download delay setting will honor only one of:

#CONCURRENT_REQUESTS_PER_DOMAIN = 16

#CONCURRENT_REQUESTS_PER_IP = 16
  • (2)创建spider目录下的spider

cmd进入到项目的根目录下(\TencentNews\TencentNews(第二个TencentNews是根目录),生成两个TencentNews是框架自带的),执行以下命令:scrapy genspider tencent(spider名字) www.qq.com(网址),创建一个spider,生成的spider如下:
在这里插入图片描述
网页下载后,从网页源码要提取哪些数据是tentcent.py文件决定的,然后决定存到哪个变量(items.py文件中定义的变量)里。

  • (3)循环抓取腾讯网的新闻例子中各个Python文件逻辑

下面开始具体修改Python文件里的代码
(a)修改item.py中的代码(设定存腾讯网的哪些信息,类似于{url:xxx,title:xxx,h1:xxx,text:xxxx}这样字典结构的item)
item.py中默认的代码如下:

import scrapy

class TencentnewsItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    pass
import scrapy

class TencentnewsItem(scrapy.Item):
    """这个类是框架自带的"""
    URL = scrapy.Field()   #定义存放当前网页地址的变量
    TITLE = scrapy.Field() #定义存放当前网页title的变量
    H1 = scrapy.Field()    #定义存放一级标题的变量
    TEXT = scrapy.Field()  #定义存放正文的变量

(b)修改spider/tencent.py中的代码(从网页中提取抓取内容的逻辑)
tencent.py中默认的代码如下:

import scrapy

class TencentSpider(scrapy.Spider):
    name = 'tencent'
    allowed_domains = ['www.qq.com']
    start_urls = ['http://www.qq.com/']

    def parse(self, response):
        pass

修改后的代码如下:

# -*- coding: utf-8 -*-
import scrapy
import re,os,sys
from TencentNews.items import TencentnewsItem             
from scrapy import Request

#在文件主目录下执行抓取:scrapy crawl tencent

class Tenc
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值