hz-juli直播APP百科

您现在的位置是:首页 > 最新版分析安卓版 > 正文

最新版分析安卓版

parsel-流畅轻松的网页爬虫:Parsel 介绍

admin2024-04-20最新版分析安卓版4
Parsel是一个基于XPath和CSS选择器的流畅轻松的网页爬虫框架。它是Scrapy流程中的一个单独的库,能够让你在少量代码的情况下即可提取所需的数据。它的实现方式是通过对HTML或XML文档进行

Parsel是一个基于XPath和CSS选择器的流畅轻松的网页爬虫框架。它是Scrapy流程中的一个单独的库,能够让你在少量代码的情况下即可提取所需的数据。

它的实现方式是通过对HTML或XML文档进行选择器的选取或过滤,并将符合条件的文档内容提取出来。XPath和CSS selectors是工作中用得最多的两种语言,而Parsel允许你可以用它们两个来爬取数据。

对开发者来说,使用Parsel可以带来很多好处。第一,Parsel提供了对编写HTML解析器的高度抽象,使得开发者不用太关注解析器的实现细节。第二,由于Parsel使用XPath和CSS选择器方式,这意味着它已经内置了常用语言的操作函数(如contains和starts-with等)和具有```if/else```逻辑的判断语句,这就减少了大量时间和代码。

下面,我将详细介绍如何使用Parsel来进行数据爬取。

一、安装和配置Parsel

要使用Parsel,首先需要需要安装它。使用pip命令即可完成:

pip install parsel

安装完成后,你需要在Scrapy应用程序中使用它。在```settings.py```中添加如下行:

DOWNLOADER_MIDDLEWARES = {

……

'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,

'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,

'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,

'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,

'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,

'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 543,

'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 544,

'scrapy.downloadermiddlewares.retry.RetryMiddleware': None,

'scrapy_fake_useragent.middleware.RetryWithFakeUserAgentMiddleware': 550,

'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': None,

'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,

'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,

'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': None,

'scrapy_fake_useragent.middleware.RedirectWithFakeUserAgentMiddleware': 850,

'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,

'scrapy.downloadermiddlewares.chunked.ChunkedTransferMiddleware': 830,

'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,

'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,

……

}

ITEM_PIPELINES = {

'cdmItemPipeline.CdmitempipelinePipeline': 300,

'scrapy.pipelines.images.ImagesPipeline':1,

'scrapy.pipelines.files.FilesPipeline':2,

'cdmMysqlPipline.CdmmysqlpiplinePipeline':500

}

IMAGES_STORE = './images'

FILES_STORE = './files'

现在你已经完成了Parsel的安装和配置,在接下来的步骤中会涉及到Parsel模块,以验证我们是否有必要使用它。

二、使用Parsel解析数据

假设我们需要从一个模板网页中提取电影信息和评论。我们需要使用Parsel入门语法,来完成相关数据的提取。在知道了如何读取页面后,我们将会提取需要的那些信息。

这里,我贴出了一个明星列表的模板页面(只是例子),假设此页面包含电影名字、评分、评论等信息:

<html>

<body>

<div class="movie-list">

<div class="movie">

<h2>The Shawshank Redemption</h2>

<p class="rating">9.3</p>

<p class="comment">This is the best movie I've ever seen.</p>

</div>

<div class="movie">

<h2>The Godfather</h2>

<p class="rating">9.2</p>

<p class="comment">Spectacular story and acting.</p>

</div>

<div class="movie">

<h2>The Dark Knight</h2>

<p class="rating">9.0</p>

<p class="comment">The best Batman movie ever.</p>

</div>

</div>

</body>

</html>

parsel-流畅轻松的网页爬虫:Parsel 介绍

parsel-流畅轻松的网页爬虫:Parsel 介绍

实现步骤如下:

1. 创建Scrapy应用程序

我们先创建一个Scrapy项目,以便从页面中获取数据。在终端中,使用以下命令创建一个新的Scrapy项目:

scrapy startproject mymovies

这将创建一个名为mymovies的项目文件夹和Scrapy项目文件结构。

2. 创建模板网页

将上面的列表模板代码复制到一个新的HTML文件中:```path/to/movies.html```

#3.创建Spider

我们需要创建一个名为MoviesSpider的Spider,用于从文件中读取电影数据。此Spider必须继承自Scrapy.Spider类,并定义parse方法来解析网页内容。

我们先打开spiders文件夹并创建一个名为mymovies_spider.py的新文件:

import scrapy

class MoviesSpider(scrapy.Spider):

name = "mymovies"

start_urls = [

"file:///path/to/movies.html"

]

def parse(self, response):

pass

首先,我们命名我们的Spider为mymovies,这样Scrapy就会由该类创建我们的Spider。我们还在start_urls中指定从哪里开始爬取。我们的RobotFileMiddleware和HttpAuthMiddleware也会使用start_urls,以获取相应的robots.txt文件和身份验证文件。这样Scrapy就会将HTML文件从本地文件系统中读取出来,并将内容提供给parse()方法。

4. 编写XPath和CSS选择器并提取数据

我们现在需要再Spider的parse()方法中提取我们需要的数据。对于提取数据,我们将使用组合XPath和CSS选择器方法。

重要提示:本文档假设你已经熟悉了XPath和CSS选择器。如果你只熟悉其中的一个,请先参阅XPath和CSS选择器的教程。

首先,我们将添加以下代码行,将HTML元素存储在变量中:

def parse(self, response):

movies = response.xpath('//div[@class="movie"]')

for movie in movies:

name = movie.xpath('.//h2/text()').extract_first()

rating = movie.css('p.rating::text').extract_first()

comment = movie.css('p.comment::text').extract_first()

这里,我们在```parse()```方法中获取任何包含```class="movie"```的 div。然后我们遍历每个电影元素。我们获取name属性的值,其XPath为```.//h2/text()```,之后我们使用```extract_first()```方法从结果的列表中提取第一个值。在这个例子中,它将提供电影的标题。我们还将获取电影的评分和评论,在此使用了CSS选择器的方案提取。

完整的Spider:

import scrapy

class MoviesSpider(scrapy.Spider):

name = "mymovies"

start_urls = [

"file:///path/to/movies.html"

]

def parse(self, response):

movies = response.xpath('//div[@class="movie"]')

for movie in movies:

name = movie.xpath('.//h2/text()').extract_first()

rating = movie.css('p.rating::text').extract_first()

comment = movie.css('p.comment::text').extract_first()

# Print Item

print()

print("MOVIE: ", name)

print("RATING: ", rating)

print("COMMENT: ", comment)

print("===" * 10)

5. 执行Spider并输出结果

为了运行我们刚刚编写的spider,请在项目目录中打开终端,并运行以下命令:

scrapy crawl mymovies

该命令运行我们的Spider并提取相关数据。结果应该与以下内容相似:

MOVIE:  The Shawshank Redemption

RATING: 9.3

COMMENT: This is the best movie I've ever seen.

==============================

MOVIE: The Godfather

RATING: 9.2

COMMENT: Spectacular story and acting.

==============================

MOVIE: The Dark Knight

RATING: 9.0

COMMENT: The best Batman movie ever.

==============================

现在我们的爬虫已经完成。我们成功地使用Parsel库爬取了HTML页面中的数据。

三、总结

Parsel是一个优秀的工具,可以帮助开发者轻松地从HTML或XML文档中提取数据。使用Parsel,您可以轻松地编写XPath和CSS选择器语句,并将它们组合在一起,以快速提取数据。Parsel的代码清晰易懂,使用简便,因此得到了广大开发者的倚重和喜爱。如果您还没有使用过Parsel,现在是时候尝试一下了!