Python Scrapy 爬虫框架及搭建

news/2024/7/19 11:15:17 标签: python, 爬虫, scrapy

Scrapy 框架实现爬虫的基本原理

Scrapy 就是封装好的框架,你可以专心编写爬虫的核心逻辑,无需自己编写与爬虫逻辑无关的代码,套用这个框架就可以实现以上功能——爬取到想要的数据。如果暂时理解不深也没关系,后边会结合实例具体介绍。

Python 爬虫基本流程

A 发起请求———B 解析内容———C 获取响应内容———D 保存数据

A 通过 HTTP 向目标站点发起请求,即发送一个 Request ,请求可以包含额外的 headers 等信息,等待服务器响应。

B 得到的内容可能是 HTML ,可以用正则表达式、网页解析库进行解析。可能是 Json ,可以直接转为 Json 对象解析,可能是二进制数据,可以做保存或者进一步的处理。

C 如果服务器能正常响应,会得到一个 Response , Response 的内容便是所要获取的页面内容,类型可能有 HTML , Json 字符串,二进制数据(如图片视频)等类型。

D 保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

搭建自己本机环境如下:Windows7 64bit———Python3.7———Pycharm64

安装 Python———安装 Pycharm———安装 Scrapy———新建爬虫项目

简单解释:将 Python 比作 Java ,那么 Pycharm 就相当于 eclipse , Pycharm 就是 Python 语言的运行环境 IDE 工具。

安装 Python

在 Python 的官网 www.python.org 中找到最新版本的 Python 安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包;

我自己机器是 win7 64bit 所以我下载的是 python-3.7.4.amd64.exe,其中的 add python 3.7 to PATH 一定要勾选。

另外安装 python 路径不要有中文和空格,避免以后麻烦。后边就点击下一步即可。

如果忘记勾选则需要手动添加环境变量:(需要添加两个:c:\python3.7.0;c:\python3.7.0\Scripts)

右键计算机——点击属性——点击高级系统设置——高级——环境变量——用户变量——PATH  添加自己安装 python 的路径。

安装 Pycharm

本篇对于环境的搭建只是起到抛砖引玉的作用,建议大家以下边做参考。

https://www.runoob.com/w3cnote/pycharm-windows-install.html

安装 Scrapy

由于安装 Scrapy 不是本系列重点,所以仅展示 Windows 系统上安装 Scrapy 的步骤。注意:一定按顺序安装。Cmd 进入 dos 窗口:

C:\Users\Administrator>pythonPython 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.C:\Users\Administrator>python -m pip -Vpip 19.0.3 from c:\python3.7.0\lib\site-packages\pip (python 3.7)  1.python -m pip install --upgrade pip2.python -m pip install 本地该文件的地址\Twisted-18.9.0-cp37-cp37m-win_amd64.whl
cp后面是python的版本号,amd64代表64位机器3.python -m pip install pypiwin324.python -m pip install scrapy5.python -m pip install requests

如果中途安装遇到问题请及时 Google 查阅资料,查阅就是积累的过程。

Scrapy 创建新项目:

Pycharm 中用 alt+F12 切换到命令行,在命令行输入:

(venv2) E:\>scrapy startproject peilv

就会生成 Scrapy 项目,项目名称是 peilv ,结构如下:主要改写2个文件:“items、settings”,新增2个文件:“爬虫主程序”、itemcsvexporter。​​​​​​​

peilvscrapy.cfg                     #创建项目时自动生成,项目的配置文件peilv/    __init__.py                #创建项目时自动生成,无需任何改动    items.py                   #创建项目时自动生成,定义爬取的字段        pipelines.py               #创建项目时自动生成,如存入文件,无需任何改动        settings.py                #创建项目时自动生成,将爬取字段按顺序输出        middlewares.py             #创建项目时自动生成,无需任何改动        spiders/           __init__.py            #创建项目时自动生成,无需任何改动		itemcsvexporter.py     #需自己编写,代码固定	        爬虫主程序.py          #需自己编写,爬虫的主程序

items.py:​​​​​​​

# -*- coding: utf-8 -*-import scrapyclass PeilvItem(scrapy.Item):    # define the fields for your item here like:    cc  = scrapy.Field()#changci    li =  scrapy.Field()#libo    b5  = scrapy.Field()#bet365

settings.py:​​​​​​​

# -*- coding: utf-8 -*-FEED_EXPORT_ENCODING = "gb18030" #解决导出的 Excel 文件中文乱码问题...FEED_EXPORTERS = {    'csv': 'peilv.spiders.itemcsvexporter.itemcsvexporter',}   FIELDS_TO_EXPORT = [    'cc',#比赛场次    'li',#立博的赔率    'b5',#bet365的赔率   ]...

itemcsvexporter.py:​​​​​​​

from scrapy.conf import settingsfrom scrapy.exporters import CsvItemExporter#指定输出到 csv 文件中字段的顺序,结合 setting.pyclass itemcsvexporter(CsvItemExporter):    def __init__(self, *args, **kwargs):...

爬虫主程序.py:(下一篇详细介绍)​​​​​​​

# -*- coding: utf-8 -*-#项目源码地址:github.com/acredjb/FBP#作者:acredjb...

改写完程序后,最终执行命令:Pycharm 用 alt+F12 切换到命令行在项目 peilv 路径上执行:​​​​​​​

(venv2) E:\>cd peilv\peilv (venv2) E:\peilv\peilv>scrapy crawl FBP -o BaseData.csv

其中 FBP 是在“爬虫主程序.py”定义的——name = 'FBP',“-o BaseData.csv” 是将爬取的数据输出到 csv 文件中。

总结

以上我们以一个实战项目为依托,将建立 Scrapy 项目的过程从零开始,深入浅出,让读者能够实践爬虫的整个过程。


http://www.niftyadmin.cn/n/469168.html

相关文章

常见的性能测试缺陷

目录 前言: 性能测试缺陷分类 一、硬件 二、网络 三、应用 四、配置 五、数据库 六、中间件 前言: 性能测试是测试系统在特定条件下的响应时间、并发用户数、吞吐量、内存使用率、CPU利用率、网络延迟等各项指标,以验证其性能是否符…

IP地址、MAC地址、互联网、WLAN、运营商、子网掩码、网络地址、网段、网关、集线器、光纤、基站

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

驱动开发:内核物理内存寻址读写

在某些时候我们需要读写的进程可能存在虚拟内存保护机制,在该机制下用户的CR3以及MDL读写将直接失效,从而导致无法读取到正确的数据,本章我们将继续研究如何实现物理级别的寻址读写。 首先,驱动中的物理页读写是指在驱动中直接读…

阿里企业邮箱收费标准_企业邮箱费用明细表

阿里云企业邮箱收费标准(免费版/标准/尊享/集团),2023阿里云企业邮箱收费标准,免费版企业邮箱0元,标准版企业邮箱540元一年(原价600元一年),企业邮箱尊享版1400元一年,9折…

处理时间的一些办法

export function isToday(data) { // 将当前日期转换为Date对象 var today new Date(); // today.setHours(0, 0, 0, 0); // 获取当前日期的年、月、日 var year today.getFullYear().toString(); var month (today.getMonth() 1).toString().padStart(2, …

Reactor的概念

一、Reactor的概念 ​ Reactor模式是一种事件驱动模式,由一个或多个并发输入源(input),一个消息分发处理器(Initiation Dispatcher),以及每个消息对应的处理器(Request Handler)构成…

socket详解

目录 socket: 套接字的工作原理: 套接字类型: 套接字可以分为两种类型:流套接字(Socket Stream)和数据报套接字(Socket Datagram)。 创建套接字: 绑定套接字到地址和…

【案例教程】环境多介质逸度模型实践技术与典型案例【代码】应用

【原文链接】:【案例教程】环境多介质逸度模型实践技术与典型案例【代码】应用https://mp.weixin.qq.com/s/i8BpApcz1p4Ua6bytxhGwA 内容简要:【注:提供以下模型所有教程】 专题一:基本理论 1.逸度的定义 2.逸度模型的基本原理…