python之scrapy框架

1.概念

‘‘‘一 Scrapy爬虫框架发送请求 ---> 获取响应数据 ---> 解析数据 ---> 保存数据

** Scarpy框架介绍 **

    1、引擎(EGINE)    引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。

    2、调度器(SCHEDULER)    用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址

    3、下载器(DOWLOADER)    用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的

    4、爬虫(SPIDERS)    SPIDERS是开发人员自定义的类,用来解析responses,并且提取items,或者发送新的请求

    5、项目管道(ITEM PIPLINES)    在items被提取后负责处理它们,主要包括清理、验证、持久化(比如存到数据库)等操作    下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间,主要用来处理从EGINE传到DOWLOADER的请求request,已经从DOWNLOADER传到EGINE的响应response,    你可用该中间件做以下几件事:        (1) process a request just before it is sent to the Downloader (i.e. right before Scrapy sends the request to the website);        (2) change received response before passing it to a spider;        (3) send a new Request instead of passing received response to a spider;        (4) pass response to a spider without fetching a web page;        (5) silently drop some requests.

    6、爬虫中间件(Spider Middlewares)    位于EGINE和SPIDERS之间,主要工作是处理SPIDERS的输入(即responses)和输出(即requests)

** Scarpy安装 **    1、pip3 install wheel    2、pip3 install lxml    3、pip3 install pyopenssl    4、pip3 install pypiwin32    5、安装twisted框架        下载twisted            http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted        安装下载好的twisted            pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd64.whl

    6、pip3 install scrapy

** Scarpy使用 **    1、进入终端cmd        - scrapy            C:\Users\administortra>scrapy            Scrapy 1.6.0 - no active project

    2、创建scrapy项目        1.创建一个文件夹,专门用于存放scrapy项目            - D:\Scrapy_prject        2.cmd终端输入命令            scrapy startproject Spider_Project( 项目名)            - 会在 D:\Scrapy_prject文件夹下会生成一个文件                   Spider_Project : Scrapy项目文件

        3.创建爬虫程序            cd Spider_Project  # 切换到scrapy项目目录下                          # 爬虫程序名称     目标网站域名            scrapy genspider   baidu     www.baidu.com  # 创建爬虫程序

    3、启动scrapy项目,执行爬虫程序

        # 找到爬虫程序文件进行执行        scrapy runspider只能执行某个 爬虫程序.py            # 切换到爬虫程序执行文件目录下            - cd D:\Scrapy_prject\Spider_Project\Spider_Project\spiders            - scrapy runspider baidu.py

        # 根据爬虫名称找到相应的爬虫程序执行        scrapy crawl 爬虫程序名称            # 切换到项目目录下            - cd D:\Scrapy_prject\Spider_Project            - scrapy crawl baidu‘‘‘2.如何使用

3.main.py

# from scrapy.cmdline import execute
# # 写终端的命令
# # scrapy crawl
# execute(["scrapy","crawl","baidu"])
from scrapy.cmdline import execute
# execute(["scrapy","genspider","lianjia","lianjia.com"])
# execute("scrapy crawl lianjia".split(" "))
execute("scrapy crawl --nolog lianjia".split(" "))
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request

# response的类
from scrapy.http.response.html import HtmlResponse
class LianjiaSpider(scrapy.Spider):
    name = ‘lianjia‘  # 爬虫程序名
    # 只保留包含lianjia.com的url
    allowed_domains = [‘lianjia.com‘]  # 限制域名

    # 存放初始请求url
    start_urls = [‘https://bj.lianjia.com/ershoufang/‘]

    def parse(self, response):  # response返回的响应对象
        # print(response)
        # print(type(response))
        # # 获取文本
        # print(response.text)
        # print(response.url)
        # 获取区域列表url
        area_list = response.xpath(‘//div[@data-role="ershoufang"]/div/a‘)

        # 遍历所有区域列表
        for area in area_list:
            print(area)
            ‘‘‘
            .extract()提取多个
            .extract_first()提取一个
            ‘‘‘
            # 1、区域名称
            area_name = area.xpath(‘./text()‘).extract_first()
            print(area_name)
            # 2、区域二级url
            area_url = ‘https://bj.lianjia.com/‘ + area.xpath(‘./@href‘).extract_first()
            print(area_url)
            # 会把area_url的请求响应数据交给callback方法
            # yield后面跟着的都会添加到生成器中
            yield Request(url=area_url, callback=self.parse_area)

    def parse_area(self, response):
        # print(response)

        house_list = response.xpath(‘//ul[@class="sellListContent"]‘)
        # print(house_list)
        if house_list:
            for house in house_list:

                house_name = house.xpath(‘.//div[@class="title"]/a/text()‘).extract_first()
                print(house_name)

                house_cost = house.xpath(‘.//div[@class="totalPrice]/text()‘).extract_first() + ‘万‘
                print(house_cost)

                house_price = house.xpath(‘.//div[@class="unitPrice"]/span/text()‘).extract_first()
                print(house_price)

                pass

4.微信机器人

from wxpy import Bot
from pyecharts import Pie
import webbrowser

# 实例化一个微信机器人对象
bot = Bot()

# 获取到微信的所有好友
friends = bot.friends()

# 设定男性\女性\位置性别好友名称
attr = [‘男朋友‘, ‘女朋友‘, ‘人妖‘]

# 初始化对应好友数量
value = [0, 0, 0]

# 遍历所有的好友,判断这个好友是男性还是女性
for friend in friends:
    if friend.sex == 1:
        value[0] += 1
    elif friend.sex == 2:
        value[1] += 1
    else:
        value[2] += 1

# 实例化一个饼状图对象
pie = Pie(‘tank的好友们!‘)

# 图表名称str,属性名称list,属性所对应的值list,is_label_show是否现在标签
pie.add(‘‘, attr, value, is_label_show=True)

# 生成一个html文件
pie.render(‘friends.html‘)

# 打开html文件
webbrowser.open(‘friends.html‘)


原文地址:https://www.cnblogs.com/lhhhha/p/11067196.html

时间: 2024-10-07 17:16:36

python之scrapy框架的相关文章

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

Python爬虫Scrapy框架入门(0)

想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题以及解决方案吧. 给几个链接吧,我是根据这几个东西来尝试学习的: scrapy中文文档(0.24版,我学习的时候scrapy已经1.1了,也许有些过时): http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/overview.html 大神的博客介绍:

基于python的scrapy框架爬取豆瓣电影及其可视化

1.Scrapy框架介绍 主要介绍,spiders,engine,scheduler,downloader,Item pipeline scrapy常见命令如下: 对应在scrapy文件中有,自己增加爬虫文件,系统生成items,pipelines,setting的配置文件就这些. items写需要爬取的属性名,pipelines写一些数据流操作,写入文件,还是导入数据库中.主要爬虫文件写domain,属性名的xpath,在每页添加属性对应的信息等. movieRank = scrapy.Fie

数据之路 - Python爬虫 - Scrapy框架

一.Scrapy框架入门 1.Scrapy框架介绍 Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,榄块之间的榈合程度低,可扩展性极强,可以灵活完成各种需求. Engine:引擎,处理整个系统的数据流处理.触发事务,是整个框架的核心. Item:项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象. Scheduler:调度器,接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎. Downloader:下载

Python爬虫Scrapy框架入门(2)

本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写xpath表达式,获取信息.自动爬取策略是,找到翻页网页元素,获取新链接地址,执行翻页.网页分析部分不再赘述,原博讲的很好很清楚,很涨姿势 基于拿来主义,我们只需要知道怎么更改Scrapy框架就行了~ items.py: import scrapy class TestprojItem(scrapy

安装 CentOs 系统 及 Python 及 Scrapy 框架

1: 先安装Centos 系统: 为什么选择CentOs系统,而不选择Ubuntu ? 我在Ubuntu上尝试了三次安装 python 和 Scrapy ,结果都没成功,在运维老王的建议下 使用CentOs ; ( 忍不住吐槽一下,python 安装包 依赖包  安装起来 真费劲! ) 2: CentOs安装过程 整体安装过程比较顺利  ,  比Ubuntu 简单多了 ;  我选择了一个mini的ios 安装之后 也没有 桌面环境 , 挺好 ,符合需求. 安装好之后的界面: 命令行环境 , 挺好

Python中scrapy框架如何安装配置

在python学习群里发现很多学习网络爬虫技术的童靴都搞不懂python爬虫框架scrapy的安装配置,在学习python网络爬虫初级阶段的时候我们利用urllib和urllib2库以及正则表达式就可以完成了,不过遇到更加强大的爬虫工具--爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows平台: 我的系统是Win7,首先,你要有Python,我用的是2.7.7版本,Python3相仿,只是一些源文件不同. 官网文档:http://doc.scrapy.org/en/l

Python 爬虫-Scrapy框架基本使用

2017-08-01  22:39:50 一.Scrapy爬虫的基本命令 Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行. Scrapy命令行格式 Scrapy常用命令 采用命令行的原因 命令行(不是图形界面)更容易自动化,适合脚本控制本质上,Scrapy是给程序员用的,功能(而不是界面)更重要. 二.Scrapy爬虫的一个基本例子 演示HTML页面地址:http://python123.io/ws/demo.html 步骤一:建立一个Scrapy爬虫 选取一个文件夹,

Python爬虫——Scrapy框架安装

在编写python爬虫时,我们用requests和Selenium等库便可完成大多数的需求,但当数据量过大或者对爬取速度有一定要求时,使用框架来编写的优势也就得以体现.在框架帮助下,不仅程序架构会清晰许多,而且爬取效率也会增加,所以爬虫框架是编写爬虫的一种不错的选择. 对于python爬虫框架,目前较为热的是Scrapy,其是一个专门爬取web结构性数据的应用框架.Scrapy是一个强大的框架,所依赖的库也较多,比如有lxml,pyOpenSSL和Twisted等,这些库在不同的平台下要求也不一

python爬虫--scrapy框架

Scrapy 一 介绍 Scrapy简介 1.Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛 2.框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便 Scrapy架构图 Scrapy主要包括了以下组件: 1.引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 2.调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可