Python网络爬虫学习(二)

本文详细介绍Scrapy框架的使用,从安装配置到项目实践,包括项目目录结构解析、核心架构说明及具体代码示例,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、框架初识
爬虫项目的半成品:常见爬虫功能的代码已经实现好了,留下一些接口,根据需求变动少量代码部分,并根据需求去调用这些接口,完成一个爬虫项目
我这里主要用的是开源的scrapy框架。

二、Scrapy框架简介
Scrapy框架是一套比较成熟的Python爬虫框架,是使用Python开发的快速、高层次的信息爬取框架,可以高效的爬取Web页面并提取出我们关注的结构化的数据
Scrapy框架的应用领域很多,如网络爬虫开发、数据挖掘、数据监测、自动化测试

三、Scrapy进行爬虫项目开发
1、安装完scrapy之后在命令窗口中输入:

C:\Users\admin>D:
D:\>cd Python\myweb
D:\Python\myweb>
D:\Python\myweb>scrapy startproject acadpjt(项目名称)
D:\Python\myweb>cd myfirstpjt
D:\Python\myweb\myfirstpjt>

2、使用genspider命令来创建Scrapy爬虫文件
使用该命令可以基于现有的爬虫模板直接生成一个新的爬虫文件

#查看可以使用的爬虫模板
D:\Python\myweb\myfirstpjt>scrapy genspider -l
Available templates:
    basic
    crawl
    csvfeed
    xmlfeed
#这里使用basic模板创建一个爬虫文件
D:\Python\myweb\myfirstpjt>scrapy genspider -t basic acahe(爬虫文件名) casad.cas.cn(网站域名)  

3、目录结构如下所示
这里写图片描述

四、Scrapy核心架构

结合核心架构对目录结构进行说明
项目下的相关文件
(1)_ init _.py:为项目的初始化文件,主要写一些项目的初始化信息
(2)settings.py:设置文件,主要为爬虫项目的一些设置信息
(3)items.py:数据容器文件,主要定义我们要获取的数据
(4)pipelines.py:管道文件,主要对items定义的数据进行进一步的加工和处理
spider项目下的相关文件
(1)_ init _.py:爬虫部分的初始化文件,主要对spiders进行初始化
(2)acahe.py:爬虫文件,所有的爬虫文件都继承scrapy.Spider,爬虫文件是非常重要的部分,所有进行的爬取动作以及数据的提取都是在该文件中进行的

五、项目实例
1、首先进行items的编写
我们想要获取什么样的信息,如网页标题,网页关键词、网页地址
这里我想要获取各个院士的姓名name,以及姓名所对应的主页的链接地址link
所以在items.py文件中定义:

import scrapy
class AcadpjtItem(scrapy.Item):
    name=scrapy.Field()
    link=scrapy.Field()

2、进行piplines的编写
编写好items.py的文件之后,还需要对爬取到的数据做进一步的处理,比如存储到json文件中,可以通过编写pipelines.py文件实现。

import json
import codecs

class AcadpjtPipeline(object):
    def __init__(self):
        #打开mydata.json文件
        self.file=codecs.open("D:/Python/acadpjt/acadpjt/mydata.json","wb",encoding="utf-8")
    def process_item(self, item, spider):
        i = json.dumps(dict(item), ensure_ascii=False)
        #每条数据之后加上换行
        line = i+'\n'
        #将数据写入到json文件之中
        self.file.write(line)
        return item
    def close_spider(self,spider):
        self.file.close()

3、settings文件的编写
pipelines默认是关闭的,所以需要在settings文件中开启

#去掉该部分的ITEM_PIPELINES的注释
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   'acadpjt.pipelines.AcadpjtPipeline': 300,
}

避免该网站的服务器通过我们的cookie识别我们的爬虫行为,所以设置实现关闭cookie的操作
设置如下,去掉部分注释

# Disable cookies (enabled by default)
COOKIES_ENABLED = False

4、最后对爬虫文件acahe.py进行编写(最重要的一部分)

import scrapy
from acadpjt.items import AcadpjtItem
from scrapy.http import Request

class AcaheSpider(scrapy.Spider):
    #爬虫的名称
    name = 'acahe'
    #允许爬行的域名
    allowed_domains = ['casad.cas.cn']
    #爬行的起始网址,可以有多个网址可以用逗号隔开
    start_urls = ['http://www.casad.cas.cn/chnl/371/index.html']

    def parse(self, response):
        #首先实例化AcadpjtItem,并且赋值给item
        item=AcadpjtItem()
        #然后通过XPath表达式提取我们需要的内容
        item["name"] = response.xpath("//span/a/text()").extract()
        item["link"] = response.xpath("//span/a/@href").extract()
        #将item交给pipeline进行处理
        yield item

parse函数中,yield返回,如果是request则加入爬取队列,如果是item类型则使用pipeline处理,其他类型则返回错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值