百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python3环境安装Scrapy爬虫框架过程

ccwgpt 2024-09-20 13:21 34 浏览 0 评论

Python3环境安装Scrapy爬虫框架过程

1. 安装wheel

pip install wheel

安装检查:

2. 安装lxml pip install lxml-4.2.1-cp36-cp36m-win_amd64.whl

去https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载对应的Python版本

选择对于的版本进行下载:cp36代表的是Python版本是多少,这里我的版本是python36,操作系统是win64位的,所以我下载文件

lxml-4.2.1-cp36-cp36m-win_amd64.whl

下载下来的Python36 lxml 版本

在DOS下切换到下载的目录下(cd D:\soft\Scrapy环境搭建)

执行:pip install lxml-4.2.1-cp36-cp36m-win_amd64.whl

3. 安装zope.interface

到官方网站https://pypi.python.org/pypi/zope.interface#downloads下载对应版本的wheel文件,如果没有登录,需要登录。

在DOS下切换到下载的目录下(cd D:\soft\Scrapy环境搭建)。

执行:pip install zope.interface-4.5.0-cp36-cp36m-win_amd64.whl

4. 安装pyOpenSSL

官方网站下载wheel文件,https://pypi.python.org/pypi/pyOpenSSL#downloads

下载pyOpenSSL-17.5.0-py2.py3-none-any.whl

在DOS下切换到下载的目录下(cd D:\soft\Scrapy环境搭建)。

执行:pip install pyOpenSSL-17.5.0-py2.py3-none-any.whl

5. 安装Twisted

同理,http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted下载wheel文件,利用pip安装即可。

如Python 3.6版本,Windows 64位系统,下载

Twisted-17.9.0-cp36-cp36m-win_amd64.whl,然后pip安装。

在DOS下切换到下载的目录下

执行:pip install Twisted-17.9.0-cp36-cp36m-win_amd64.whl

6. 安装pywin32

从官方网站 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/ 下载对应版本的安装包安装。

下载

安装:

在安装时会出现提示python3.6-32在注册表中不存在。

处理windos64位下python3.6安装pywin32的问题的方法

方法一

这个报的错是因为注册表问题,于是百度到下面一段代码

这段代码执行以后可以自动将py3.6安装目录直接添加进注册表,检查了下注册表,的确出现了。

第一步按“win+R”或者点击开始菜单,找到运行,在运行输入框里面输入“regedit”,如下图所示:

在HKEY-CURRENT_USER–Software–Python–PythonCore–会发现3.6-32文件夹

方法二: 把注册表3.6导出,名称另存为3.6-32,再导入注册表,重启电脑即可。

处理完之后,就可以安装pywin32-220.win-amd64-py3.6

7. 安装Scrapy pip install Scrapy

最后安装Scrapy即可,依然使用pip,命令如下:

Scrapy 安装成功验证

制作 Scrapy 爬虫一共需要4步:

  • 新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
  • 明确目标 (编写items.py):明确你想要抓取的目标
  • 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
  • 存储内容 (pipelines.py):设计管道存储爬取内容

步骤:

一. 新建项目(scrapy startproject)

1. 新建一个文件夹存放scrapy项目(D:\爬虫_script\scrapy_project)。

2.从dos下进入到该目录下

3.新建一个新的爬虫项目:scrapy startproject mySpiter

下面来简单介绍一下各个主要文件的作用:

scrapy.cfg :项目的配置文件

mySpider/ :项目的Python模块,将会从这里引用代码

mySpider/items.py :项目的目标文件

mySpider/pipelines.py :项目的管道文件

mySpider/settings.py :项目的设置文件

mySpider/spiders/ :存储爬虫代码目录

二、明确目标(mySpider/items.py)

我们打算抓取:http://www.itcast.cn/channel/teacher.shtml 网站里的所有讲师的姓名、职称和个人信息。

打开mySpider目录下的items.py

Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误。

可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field的类属性来定义一个Item(可以理解成类似于ORM的映射关系)。

接下来,创建一个ItcastItem 类,和构建item模型(model)。

import scrapy

class ItcastItem(scrapy.Item):

name = scrapy.Field()

level = scrapy.Field()

info = scrapy.Field()

三、制作爬虫 (spiders/itcastSpider.py)

爬虫功能要分两步:

1. 爬数据

  • 在当前目录下输入命令,将在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:
  • 打开 mySpider/spider目录里的 itcast.py,默认增加了下列代码:
scrapy genspider itcast "itcast.cn"
import scrapy
 
class ItcastSpider(scrapy.Spider):
 name = "itcast"
 allowed_domains = ["itcast.cn"]
 start_urls = (
 'http://www.itcast.cn/',
 )
 
 def parse(self, response):
 pass

其实也可以由我们自行创建itcast.py并编写上面的代码,只不过使用命令可以免去编写固定代码的麻烦

要建立一个Spider, 你必须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。

  • name = "" :这个爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。
  • allow_domains = [] 是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。
  • start_urls = () :爬取的URL元祖/列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。
  • parse(self, response) :解析的方法,每个初始URL完成下载后将被调用,调用的时候传入从每一个URL传回的Response对象来作为唯一参数,主要作用如下:
  1. 负责解析返回的网页数据(response.body),提取结构化数据(生成item)
  2. 生成需要下一页的URL请求。

将start_urls的值修改为需要爬取的第一个url

start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)

修改parse()方法

def parse(self, response):
 filename = "teacher.html"
 open(filename, 'w').write(response.body)

然后运行一下看看,在mySpider目录下执行:

scrapy crawl itcast

是的,就是 itcast,看上面代码,它是 ItcastSpider 类的 name 属性,也就是使用 scrapy genspider命令的唯一爬虫名。

运行之后,如果打印的日志出现 [scrapy] INFO: Spider closed (finished),代表执行完成。 之后当前文件夹中就出现了一个 teacher.html 文件,里面就是我们刚刚要爬取的网页的全部源代码信息。

2. 取数据

  • 爬取整个网页完毕,接下来的就是的取过程了,首先观察页面源码:
<div class="li_txt">
 <h3> xxx </h3>
 <h4> xxxxx </h4>
 <p> xxxxxxxx </p>

保存数据

scrapy保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,,命令如下:

# json格式,默认为Unicode编码
scrapy crawl itcast -o teachers.json 
# json lines格式,默认为Unicode编码
scrapy crawl itcast -o teachers.jsonl 
# csv 逗号表达式,可用Excel打开
scrapy crawl itcast -o teachers.csv 
# xml格式
scrapy crawl itcast -o teachers.xml

相关推荐

css布局方案汇总(28个实例图文并茂)

简介布局在我们前端日常开发来说是非常重要的,一个好的布局能简化代码的同时还能提高网页的性能。常见的布局方法有浮动(float)布局、绝对定位(position)布局、表格布局(table)、弹性(fl...

十款免费的CSS框架加速Web开发

Pure这是Yahoo最新推出的一款CSS框架,它只有HTML和CSS,没有使用任何JavaScript语言。总大小只有4.4kb,但功能却非常丰富,支持响应式样式和各种导航、表格、表单、按钮、网格和...

Tailwind CSS 是不是目前世上最好的CSS框架?

转载说明:原创不易,未经授权,谢绝任何形式的转载今天看了一篇国外大佬对TailwindCSS的看法,在这里分享给大家,看看大家是否赞同,以下是其相关内容的整理,由于翻译水平有限,欢迎大家讨论和指...

下一代 CSS 框架:Mojo CSS,为何如此受欢迎?

TailwindCSS推出即受到广大开发者的欢迎,当前Githubstar数已达77.8k。它是一个功能类优先(utility-first)的CSS框架,它提供了一系列功能类,让开发者...

常见的几种摄影构图方式

摄影构图,是一种在摄影画面中表现结构美、形式美的方式。构图能让摄影主体更加突出,画面更加有序。所以说,构图在摄影中是非常重要的一个环节。无论是前期构图还是后期构图,摄影者都要对构图有一个比较深的了解。...

风光摄影10大构图技巧,会用构图,照片更容易好看

风光摄影10大构图技巧,会用构图,照片更容易好看先解释一下,为什么会使用构图之后,照片更容易好看?因为,构图是根据很多好看的照片,总结出来的技巧,使用这些构图技巧,就相当于站在了巨人的肩膀上,也就是用...

掌握框式构图的摄影技巧,会让摄影爱好者的作品更有魅力!

很多摄影爱好者都知道摄影构图中有个框式构图,但大多数人对框式构图的摄影技巧,却一知半解。所以摄影爱好者们有必要更全面、深入的了解,并掌握框式构图,会对你摄影水平的提高更有帮助。【欢迎点击上方关注:金立...

这个构图很简洁,但为什么不耐看?

摄影爱好者最常犯的错就是过于复杂、主体不明确,但当遇到简单的场景往往又会出现单调、不耐看的状况。为什么会这样?说白了还是观察力不够。下面是本周的摄影入围习作,我们一起来看看这些照片中主体、陪体以及背景...

初学者需要记牢的八种常用构图法

作者:冯海军摄影中,构图很关键,决定照片是否成功,所以在构图上要加以重视和推敲,虽然说构图无定法,但是也有很多的规律可循,以下列举几种常用构图,会对初学者有很大的帮助。多彩刘卫洲摄苏州姑苏俱乐部(...

构图这件事不难!掌握14种构图模式就稳了

如果说视觉元素是视觉信息的载体,那么构图就是视觉元素的载体。没有适当形式的构图对视觉元素有机、有序地承载,平面设计将无法传达预定的设计意图和视觉信息。因此,对于平面设计而言,构图是平面设计不可或缺的重...

框架构图如何使用?

1分钟教你用手机拍大片。今天我们利用框架构图,在不同的运镜方法下拍摄。·首先将手机贴近地面,拍摄人物走过的画面。·然后利用3D效果的背景衬托,将手机贴近地面,以低角度仰拍人物。·最后我们用高清画质来呈...

面构图的5种超实用的构图形式 前景构图,框架构图,填充构图

面构图的5种超实用的构图形式。为什么有的人拍摄的照片好看又舒适?仔细观察会发现他们善用构图。大家好,今天带大家了解摄影中5种超实用的面构图形式。·一、前景构图。前景是构图中的神奇要素,可以提升照片的表...

一看就懂!跟着马格南的大师学构图

马格南图片社是迄今为止全球最重要的摄影图片社,其网站包涵了太多经典的名字和照片。细细品味这些经典图片,能够学到很多有用的构图手法。跟着大师走,总不会错吧?前后景的运用这似乎是非常常见的一种手法,仔细看...

这才是框架构图,有想法!能给你启发么?

框架构图大家并不陌生,但并不是有一个框就行了。框架构图用得不好,就很死板生硬,给人感觉很假。如果你理解透了,拍出的作品不会单调。今天就给大家分享一下框架构图,你看看有哪些妙用?1.广角与长焦的应用长焦...

7B小模型写好学术论文,新框架告别AI引用幻觉

ScholarCopilot团队投稿量子位|公众号QbitAI学术写作通常需要花费大量精力查询文献引用,而以ChatGPT、GPT-4等为代表的通用大语言模型(LLM)虽然能够生成流畅文本,但...

取消回复欢迎 发表评论: