热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

scrapy中不同页面的拼接_scrapy官方文档提供的常见使用问题

Scrapy与BeautifulSoup或lxml相比如何?BeautifulSoup和lxml是用于解析HTML和XML的库。Scrapy是一个用于编写Web爬虫的

Scrapy与BeautifulSoup或lxml相比如何?

BeautifulSoup和lxml是用于解析HTML和XML的库。Scrapy是一个用于编写Web爬虫的应用程序框架,可以抓取网站并从中提取数据。

Scrapy提供了一种用于提取数据的内置机制(称为 选择器),但如果您觉得使用它们感觉更舒服,则可以轻松使用BeautifulSoup (或lxml)。毕竟,他们只是解析可以从任何Python代码导入和使用的库。

换句话说,将BeautifulSoup(或lxml)与Scrapy进行比较就像将jinja2与Django进行比较一样。

我可以和BeautifulSoup一起使用Scrapy吗?

是的你可以。如所提到的上面,BeautifulSoup可用于在Scrapy回调解析HTML响应。您只需将响应的主体提供给BeautifulSoup对象并从中提取所需的任何数据。

这是使用BeautifulSoup API的示例蜘蛛,lxml作为HTML解析器:

from bs4 import BeautifulSoup
import scrapyclass ExampleSpider(scrapy.Spider):name = "example"allowed_domains = ["example.com"]start_urls = ('http://www.example.com/',)def parse(self, response):# use lxml to get decent HTML parsing speedsoup = BeautifulSoup(response.text, 'lxml')yield {"url": response.url,"title": soup.h1.string}

注意

BeautifulSoup支持多个HTML / XML解析器。请参阅BeautifulSoup的官方文档,了解哪些可用。

Scrapy支持哪些Python版本?

在CPython(默认Python实现)和PyPy(从PyPy 5.9开始)下,Python 2.7和Python 3.4+支持Scrapy。从Scrapy 0.20开始,Python 2.6支持被删除。Scrapy 1.1中添加了Python 3支持。在Scrapy 1.4中添加了PyPy支持,在Scrapy 1.5中添加了PyPy3支持。

注意

对于Windows上的Python 3支持,建议按照安装指南中的说明使用Anaconda / Miniconda 。

Scrapy是否从Django“窃取”?

可能,但我们不喜欢这个词。我们认为Django是一个很好的开源项目,也是一个值得关注的例子,因此我们将它作为Scrapy的灵感来源。

我们相信,如果事情已经做好,就没有必要重新发明它。这个概念除了是开源和自由软件的基础之外,不仅适用于软件,还适用于文档,程序,策略等。因此,我们不是自己解决每个问题,而是选择从这些项目中复制想法。已经妥善解决了这些问题,并专注于我们需要解决的实际问题。

如果Scrapy是其他项目的灵感,我们会感到自豪。随意偷我们!

Scrapy是否适用于HTTP代理?

是。通过HTTP代理下载器中间件提供对HTTP代理的支持(自Scrapy 0.8起)。见HttpProxyMiddleware

如何在不同页面中抓取具有属性的项目?

请参阅将其他数据传递给回调函数。

Scrapy崩溃:ImportError:ImportError: No module named win32api

由于这个Twisted错误,你需要安装pywin32。

如何在蜘蛛中模拟用户登录?

请参阅使用FormRequest.from_response()来模拟用户登录。

Scrapy是以广度优先还是深度优先的顺序爬行?

默认情况下,Scrapy使用LIFO队列来存储挂起的请求,这基本上意味着它以DFO顺序进行爬网。在大多数情况下,此订单更方便。如果您确实想要以真正的BFO顺序进行爬网,可以通过设置以下设置来执行此操作:

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'

我的Scrapy爬虫有内存泄漏。我能做什么?

请参阅调试内存泄漏。

此外,Python有内置内存泄漏问题,泄漏中描述 没有泄漏。

如何让Scrapy消耗更少的内存?

见上一个问题。

我可以在蜘蛛中使用基本HTTP身份验证吗?

是的,看HttpAuthMiddleware

为什么Scrapy用英语而不是我的母语下载页面?

尝试通过覆盖设置来更改默认的Accept-Language请求标头 DEFAULT_REQUEST_HEADERS

我在哪里可以找到一些示例Scrapy项目?

见例子。

我可以在不创建项目的情况下运行蜘蛛吗?

是。您可以使用该runspider命令。例如,如果您在my_spider.py文件中编写了一个蜘蛛,则可以使用以下命令运行它:

scrapy runspider my_spider.py

有关runspider详细信息,请参阅命令

我收到“Filtered offsite request”消息。我该如何解决这些问题?

这些消息(以DEBUG级别记录)并不一定意味着存在问题,因此您可能不需要修复它们。

这些消息是由非现场蜘蛛中间件抛出的,它是一个蜘蛛中间件(默认启用),其目的是过滤掉蜘蛛所覆盖范围之外的域的请求。

有关更多信息,请参阅: OffsiteMiddleware

在生产中部署Scrapy搜寻器的推荐方法是什么?

请参阅部署Spider。

我可以将JSON用于大型出口吗?

这取决于你的输出有多大。请参阅此警告的JsonItemExporter 文档。

我可以从信号处理程序返回(扭曲)延迟吗?

有些信号支持从处理程序返回延迟,其他信号则不支持。请参阅内置信号参考以了解哪些参考。

响应状态代码999的含义是什么?

999是Yahoo站点用于限制请求的自定义响应状态代码。尝试使用2蜘蛛中的下载延迟(或更高)来降低爬行速度:

class MySpider(CrawlSpider):name = 'myspider'download_delay = 2# [ ... rest of the spider code ... ]

或者使用设置在项目中设置全局下载延迟 DOWNLOAD_DELAY

我可以调用pdb.set_trace()给我的蜘蛛进行调试吗?

是的,但您也可以使用Scrapy shell,它允许您快速分析(甚至修改)蜘蛛处理的响应,这通常比普通的更有用pdb.set_trace()

有关更多信息,请参阅从spiders调用shell以检查响应。

将所有已删除项目转储到JSON / CSV / XML文件的最简单方法是什么?

要转储到JSON文件中:

scrapy crawl myspider -o items.json

要转储到CSV文件:

scrapy crawl myspider -o items.csv

要转储到XML文件中:

scrapy crawl myspider -o items.xml

有关更多信息,请参阅Feed导出

__VIEWSTATE在某些形式中使用的这个巨大的神秘参数是什么?

__VIEWSTATE参数用于使用ASP.NET / VB.NET构建的站点。有关其工作原理的详细信息,请参阅此页面。此外,这是一个蜘蛛的示例 ,它刮擦其中一个站点。

Scrapy是否自动管理COOKIE?

是的,Scrapy接收并跟踪服务器发送的COOKIE,并将其发送回后续请求,就像任何常规Web浏览器一样。

有关更多信息,请参阅请求和响应以及COOKIEsMiddleware。

如何查看Scrapy发送和接收的COOKIE?

启用COOKIES_DEBUG设置。

我如何指导蜘蛛自行停止?

CloseSpider从回调中提出异常。有关更多信息,请参阅:CloseSpider

如何防止我的Scrapy机器人被禁止?

请参阅避免被禁止。

我应该使用蜘蛛参数或设置来配置我的蜘蛛吗?

这两种蜘蛛的参数和设置, 可以用于配置您的蜘蛛。没有严格的规则要求使用其中一个,但设置更适合参数,一旦设置,变化不大,而蜘蛛参数意味着更频繁地更改,即使在每个蜘蛛运行时,有时是蜘蛛根本需要运行(例如,设置蜘蛛的起始URL)。

举一个例子来说明,假设您有一个需要登录站点来抓取数据的蜘蛛,并且您只想从站点的某个部分(每次都有所不同)中抓取数据。在这种情况下,登录的凭据将是设置,而要刮取的部分的URL将是蜘蛛参数。

我正在抓取一个XML文档,我的XPath选择器不会返回任何项目

您可能需要删除命名空间。请参阅删除命名空间。

程序流程没问题,启动就自动停止,也无报错

这可能是Spider中解析函数命名和关键词命名重合,导致回调不执行,不能增量抓取,短时间即停止

d46187f01604e89bf8f8931ab6e540a0.png


推荐阅读
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
小果康康维五_469
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有