我有一个包含3个成员的MongoDB副本集和一个存储数据的Python应用程序.
AutoReconnect当使用带有包装器的单个文档插入时,我可以处理pymongo的异常,如下所示:
def safe_mongo_call(method, num_retries, *args, **kwargs):
while True:
try:
return method(*args, **kwargs)
except (pymongo.errors.AutoReconnect,
pymongo.errors.ServerSelectionTimeoutError) as e:
if num_retries > 0:
logger.debug('Retrying MongoDB operation: %s', str(e))
num_retries -= 1
else:
raise
Run Code Online (Sandbox Code Playgroud)
我不确定在使用批量写入时如何处理这些异常,例如insert_many方法.根据文档,批量写入不是原子的,因此即使发生其中一个异常,也可能已经有一些文档成功写入数据库.因此,我不能简单地重用上面的包装器方法.
如何处理这些情况的最佳方法是什么?
我在这里放置 HTML 代码:
<div class="rendering rendering_person rendering_short rendering_person_short">
<h3 class="title">
<a rel="Person" href="https://moh-it.pure.elsevier.com/en/persons/massimo-eraldo-abate" class="link person"><span>Massimo Eraldo Abate</span></a>
</h3>
<ul class="relations email">
<li class="email"><a href="massimo.abate@ior.it" class="link"><span>massimo.abate@ior.it</span></a></li>
</ul>
<p class="type"><span class="family">Person: </span>Academic</p>
</div>
Run Code Online (Sandbox Code Playgroud)
从上面的代码如何提取 Massimo Eraldo Abate?
请帮我。
在网上寻找Scrapy解决验证码时,我什至没有很好的例子可以入手。
我创建了一个非常基本的验证码页面。http://145.100.108.148/login3/
是否有人提供了可行的示例来解决此问题,或者至少以体面的方式配置了Scrapy来尝试解决此问题。
我注意到 docplayer.net 嵌入了许多 pdf 文件。示例:http://docplayer.net/72489212-Excellence-in-prevention-descriptions-of-the-prevention-programs-and-strategies-with-the-greatest-evidence-of-success.html
然而,使用自动化工作流程提取这些 pdf(即下载它们)的过程是如何进行的呢?
一些pdf网址不以".pdf"结尾,因此,我们只能在检查响应标头后找到.我想避免下载这样的pdf.在Scrapy中,在完全下载响应后检查标题很容易.我如何才下载并检查响应标题并稍后才下载正文?
我正在使用 Scrapy 中的 XMLfeedspider 从页面 xml 中提取信息。我试图仅提取此页面上标签“loc”内的链接并加载它们,但阻止页面重定向,然后将其发送到最后一个解析节点,该解析节点将从该页面收集信息。问题是我不确定是否可以在“def star_urls”上加载这些页面,或者我是否需要使用 parse_node 并重定向到另一个解析来提取我需要的信息,但即使我尝试这样做,我'我不确定如何仅从 xml 页面中提取链接,而不是所有 loc 标记。
继续我的想法:
这个想法应该是加载这个 xml 页面并<loc>从中提取标签内的链接,如下所示:
https://www.gotdatjuice.com/track-2913133-sk-invitational-ft-sadat-x-lylit-all-one-cdq.html https://www.gotdatjuice.com/track-2913131-sk-invitational -ft-mop-we-dont-stop-cdq.html
最后加载每个页面并提取标题和网址。
有任何想法吗?
找到下面我的代码:
from scrapy.loader import ItemLoader
from scrapy.spiders import XMLFeedSpider
from scrapy.http import Request
from testando.items import CatalogueItem
class TestSpider(XMLFeedSpider):
name = "test"
allowed_domains = ["gotdajuice.ie"]
start_urls = [
'https://www.gotdatjuice.com/sitemap.xml'
]
namespaces = [('n', 'http://www.sitemaps.org/schemas/sitemap/0.9')]
itertag = 'n:loc'
iterator = 'xml'
name_path = ".//div[@class='song-name']/h1/text()"
def start_request(self):
urls = node.xpath(".//loc/text()").extract()
for url in urls:
yield …Run Code Online (Sandbox Code Playgroud) python ×5
scrapy ×5
bulkinsert ×1
captcha ×1
mongodb ×1
pdf ×1
pymongo ×1
replicaset ×1
xml ×1