热门标签 | 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


推荐阅读
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
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社区 版权所有