zl程序教程

您现在的位置是:首页 >  后端

当前栏目

「python」如何有效利用Scrapy框架建立网页爬虫看这篇就懂——第三篇

Python网页爬虫scrapy框架 如何 利用 有效
2023-09-27 14:27:53 时间

在这里插入图片描述
「python」实用的Scrapy框架安装指南,开始你的第一个专案-第2篇文章,完成Scrapy框架的安装以及专案的建立后,接下来,就可以在其中开发网页爬虫,而在开发之前,又有哪些基本的观念需要知道?本文将一步一步带大家来进行了解,重点包含:

Scrapy网页爬虫建立方法

Scrapy网页爬虫结构

Scrapy网页爬虫执行方法

一、Scrapy网页爬虫建立方法

首先,回顾一下上一篇文章中,在建立Scrapy专案时,可以看到如下图的执行结果:
在这里插入图片描述
其中,提示了建立Scrapy网页爬虫的方法,也就是如下指令:

$ scrapy genspider 网页爬虫档案名称目标网站的网域名称

举例来说,本文想要建立一个Scrapy网页爬虫,来爬取INSIDE硬塞的网络趋势观察网站的AI相关新闻,这时候,就可以开启Scrapy专案,比照以上的指令来建立网页爬虫:

$ scrapy genspider inside www.inside.com.tw. inside . com

执行结果

在这里插入图片描述
成功建立Scrapy网页爬虫后,在专案中的spiders资料夹下,就可以看到多了一个inside.py档案,如下图:

在这里插入图片描述

二、Scrapy网页爬虫架构

开启spiders资料夹下的inside.py网页爬虫档案,可以看到Scrapy框架帮我们产生了以下的内容结构:
在这里插入图片描述
其中,包含了以下三个属性(Attribute)及一个方法(Method):

name属性:网页爬虫的名称,在专案中必须是唯一的。

allowed_domains属性:目标网站的网域名称清单。

start_urls属性:想要爬取的一至多个网页网址清单。

parse()方法:撰写网页爬虫程式逻辑的地方,特别注意此方法名称不得更改。

三、Scrapy网页爬虫执行方法

由于本文所要爬取的是INSIDE硬塞的网络趋势观察网站的AI相关新闻,所以在start_urls属性的地方,修改为AI新闻的网页网址,如下范例第7行:
在这里插入图片描述
接下来,就可以在parse()方法(Method)中,撰写网页爬虫的逻辑。而在开发之前,先来分析一下INSIDE硬塞的网路趋势观察网站的AI新闻网页,如下图:

在这里插入图片描述
在新闻标题的地方,点击右键,选择「检查」,可以看到HTML原始码如下图:
在这里插入图片描述

从上图可以看出来,利用

标签及它的「post_title」样式类别(class),就可以定位到新闻标题的元素。

回到Scrapy专案中的inside.py档案,在parse()方法(Method)的地方,利用Scrapy框架的定位元素语法,就可以来撰写网页爬虫,这部分将会在下一篇文章和大家进行分享,本文先以BeautifulSoup模组(Module)为例进行示范,如下范例:
在这里插入图片描述

首先,需引用bs4模组(Module),在第11行将Scrapy引擎(ENGINE)回应的结果进行解析,接着,爬取网页的所有新闻标题,并且透过回圈把取得的每个新闻标题印出来。

完成后,在执行这个Scrapy网页爬虫之前,需设定User-Agent(使用者代理),简单来说,就是浏览器的相关资讯,位于settings.py档案,如下范例:

#USER_AGENT = 'news_scraper (+http://www.yourdomain.com)'

预设是注解的状态,所以,将注解取消并且加上User-Agent(使用者代理),如下范例:

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

最后,就可以利用「scrapy crawl」指令,加上网页爬虫的名称inside,来执行Scrapy网页爬虫,如下范例:

$ scrapy crawl inside

执行结果

在这里插入图片描述

四、小结
本文分享了Scrapy网页爬虫的建立与执行方法,透过实作可以感受到Scrapy框架非常的强大,利用指令即可快速建立类别(Class)结构的网页爬虫样板,透过这样的物件导向结构,不但能提升未来的维护性,习惯BeautifulSoup语法的朋友,也可以无痛的快速入门。

对于想要利用Scrapy框架开发网页爬虫的朋友,希望本文能够对您有所帮助,有任何的想法都欢迎在底下留言和我分享