python爬虫(scrapy框架入门)

1.scrapy是什么

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.

2.Scrapy安装

#1.win+R

#2.输入cmd,并且按下回车

#3.输入以下命令


python -m pip install --upgrade pip

pip install wheel

pip install lxml

pip install twisted

pip install pywin32

pip install scrapy

3.入门案例

#1,创建项目

#在刚才安装scrapy框架的地方输入以下命令

#项目默认创建在c盘(一般在桌面)

scrapy startproject TXmovies

cd TXmovies

scrapy genspider txms v.qq.com

#目录下文件

ProjectName              #项目文件夹

ProjectName           #项目目录      

items.py               #定义数据结构       

middlewares.py    #中间件      

pipelines.py          #数据处理      

settings.py            #全局配置      

__init__.py       #爬虫文件

#2,更改setting文件

python爬虫(scrapy框架入门)_第1张图片

python爬虫(scrapy框架入门)_第2张图片 

 

DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
}

python爬虫(scrapy框架入门)_第3张图片

 #3,编写items

python爬虫(scrapy框架入门)_第4张图片

 

import scrapy

classTxmoviesItem(scrapy.Item):

        #definethefieldsforyouritemherelike:

        #name=scrapy.Field()

        name=scrapy.Field()

        description=scrapy.Field()

#4,编写爬虫文件

import scrapy
from ..items import TxmoviesItem


class TxmsSpider(scrapy.Spider):
    name = 'txms'
    allowed_domains = ['v.qq.com']
    #开始地址
    start_urls = [
        'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset=0&pagesize=30']
    #位移
    offset = 0

    def parse(self, response):
        #定义数据结构,用来存放解析后的数据
        items = TxmoviesItem()
        #将页面解析数据放到列表,每个页面有多个这种div,解析完后就有多条,存放到列表
        lists = response.xpath('//div[@class="list_item"]')
        #便利列表,将数据存到数据结构item
        for i in lists:
            #从div中提取name
            items['name'] = i.xpath('./a/@title').get()
            #从div中提取name的描述
            items['description'] = i.xpath('./div/div/@title').get()
            #移交控制权给管道
            yield items
        #翻页,
        if self.offset < 120:
            #位移修改(页数修改)
            self.offset += 30
            url = 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={}&pagesize=30'.format(
                str(self.offset))
            #移交控制权,回调parse函数(和java的自己调自己类似)
            yield scrapy.Request(url=url, callback=self.parse)

python爬虫(scrapy框架入门)_第5张图片

 

你可能感兴趣的:(python)