📅  最后修改于: 2023-12-03 15:24:00.439000             🧑  作者: Mango
如果你需要在网站上爬取数据时进行导航,并跟踪链接以访问更多页面并获取更多数据,那么 Scrapy 是一个非常好的 web 爬虫框架。Scrapy 有一个强大的链接管理器,它可以自动跟踪 URL,让你的爬虫访问更多页面,从而抓取更多数据。
本文将向您介绍如何使用 Scrapy 跟踪链接以访问不同的页面。
首先,我们需要创建一个新的 Scrapy 项目。在命令行中输入以下命令:
scrapy startproject myproject
cd myproject
这将创建一个名为 myproject
的新 Scrapy 项目,并将您带回到其根目录。
接下来,我们需要为我们的项目创建一个新的 Spider。在命令行中输入以下命令:
scrapy genspider example example.com
这将创建一个名为 example
的新 Spider,并将默认在 https://www.example.com
上进行爬取。当然,这不是我们要爬取的实际网站,所以我们需要修改这个网址。
打开 myproject/spiders/example.py
文件,并替换 start_urls
列表中的 https://www.example.com
:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
def parse(self, response):
pass
将start_urls
列表中的网址替换为我们要爬取的实际网站的网址。
现在,我们已经为我们的 Scrapy 项目创建了一个新的 Spider。我们将学习如何编写一个 Scrapy Spider,以使用 Scrapy 的链接管理器跟踪 URL 以访问不同的页面。
在 Scrapy 中,我们将访问过的 URL 存储在一个特殊的数据结构中,称为 “Visited Set”。 Scrapy 还提供了一个链接提取器,可以从页面中提取所有链接,我们可以通过将这些链接添加到Scrapy中的队列中,来自动跟踪链接并访问更多页面。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
def parse(self, response):
# Extract all the links from the page
links = response.css("a::attr(href)").extract()
# Follow the links
for link in links:
yield response.follow(link, callback=self.parse)
在上面的代码中,我们使用 css
选择器从响应对象中提取所有链接。我们创建了一个循环,对每个链接使用 response.follow(link, callback=self.parse)
调用来自动跟踪链接。
为了避免陷入循环中,我们还需要限制我们跟踪的链接数量。Scrapy 提供 depth_limit
设置来控制最多跟踪多少链接。我们可以在项目设置中进行全局设置,也可以在每个 Spider 独立设置。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
custom_settings = {
'DEPTH_LIMIT': 1
}
def parse(self, response):
# Extract all the links from the page
links = response.css("a::attr(href)").extract()
# Follow the links
for link in links:
yield response.follow(link, callback=self.parse)
在上面的代码中,我们将 DEPTH_LIMIT
设置为 1
,表示跟踪一个链接深度,即将链接从起始页面中提取,然后访问每个链接中提取的页面。如果我们将 DEPTH_LIMIT
设置为 2
,则可以访问链接中的链接。
使用 Scrapy 的链接管理器自动跟踪 URL 是一种轻松获取数据的方法。在本文中,我们介绍了如何创建新的 Scrapy 项目、如何创建新的 Scrapy Spider,以及如何编写 Scrapy Spider,以自动跟踪 URL 并访问不同的页面。
Markdown原文:
如果你需要在网站上爬取数据时进行导航,并跟踪链接以访问更多页面并获取更多数据,那么 Scrapy 是一个非常好的 web 爬虫框架。Scrapy 有一个强大的链接管理器,它可以自动跟踪 URL,让你的爬虫访问更多页面,从而抓取更多数据。
本文将向您介绍如何使用 Scrapy 跟踪链接以访问不同的页面。
首先,我们需要创建一个新的 Scrapy 项目。在命令行中输入以下命令:
scrapy startproject myproject
cd myproject
这将创建一个名为 myproject
的新 Scrapy 项目,并将您带回到其根目录。
接下来,我们需要为我们的项目创建一个新的 Spider。在命令行中输入以下命令:
scrapy genspider example example.com
这将创建一个名为 example
的新 Spider,并将默认在 https://www.example.com
上进行爬取。当然,这不是我们要爬取的实际网站,所以我们需要修改这个网址。
打开 myproject/spiders/example.py
文件,并替换 start_urls
列表中的 https://www.example.com
:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
def parse(self, response):
pass
将start_urls
列表中的网址替换为我们要爬取的实际网站的网址。
现在,我们已经为我们的 Scrapy 项目创建了一个新的 Spider。我们将学习如何编写一个 Scrapy Spider,以使用 Scrapy 的链接管理器跟踪 URL 以访问不同的页面。
在 Scrapy 中,我们将访问过的 URL 存储在一个特殊的数据结构中,称为 “Visited Set”。 Scrapy 还提供了一个链接提取器,可以从页面中提取所有链接,我们可以通过将这些链接添加到Scrapy中的队列中,来自动跟踪链接并访问更多页面。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
def parse(self, response):
# Extract all the links from the page
links = response.css("a::attr(href)").extract()
# Follow the links
for link in links:
yield response.follow(link, callback=self.parse)
在上面的代码中,我们使用 css
选择器从响应对象中提取所有链接。我们创建了一个循环,对每个链接使用 response.follow(link, callback=self.parse)
调用来自动跟踪链接。
为了避免陷入循环中,我们还需要限制我们跟踪的链接数量。Scrapy 提供 depth_limit
设置来控制最多跟踪多少链接。我们可以在项目设置中进行全局设置,也可以在每个 Spider 独立设置。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['https://www.example.com']
custom_settings = {
'DEPTH_LIMIT': 1
}
def parse(self, response):
# Extract all the links from the page
links = response.css("a::attr(href)").extract()
# Follow the links
for link in links:
yield response.follow(link, callback=self.parse)
在上面的代码中,我们将 DEPTH_LIMIT
设置为 1
,表示跟踪一个链接深度,即将链接从起始页面中提取,然后访问每个链接中提取的页面。如果我们将 DEPTH_LIMIT
设置为 2
,则可以访问链接中的链接。
使用 Scrapy 的链接管理器自动跟踪 URL 是一种轻松获取数据的方法。在本文中,我们介绍了如何创建新的 Scrapy 项目、如何创建新的 Scrapy Spider,以及如何编写 Scrapy Spider,以自动跟踪 URL 并访问不同的页面。