gpt4 book ai didi

python - Scrapy - 连接以非干净的方式丢失。跨单个域不一致

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:38 33 4
gpt4 key购买 nike

我创建了一个基本的蜘蛛来从totaljobs.com 上抓取一小部分职位列表。我已经使用单个起始 URL 设置了蜘蛛,以显示我感兴趣的作业列表。从那里,我对结果的每个页面启动单独的请求。在每个请求中,我都会启动一个单独的请求,回调不同的解析方法,以处理各个作业 URL。

我发现起始 URL 和所有结果页面请求都处理得很好 - scrapy 连接到网站并返回页面内容。但是,当它尝试跟踪每个单独作业页面的 URL 时,scrapy 无法形成连接。在我的日志文件中,它指出:

[<twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion: Connection lost.>]

恐怕我没有大量的编程经验或互联网协议(protocol)等知识。因此请原谅我无法提供有关此处可能发生的情况的更多信息。我尝试过更改 TLS 连接类型;更新到最新版本的 scrapy、twisted 和 OpenSSL;回滚到之前版本的 scrapy、twisted 和 OpenSSL;回滚加密版本,创建自定义上下文工厂并尝试各种浏览器代理和代理。我每次都会得到相同的结果:每当 URL 与特定作业页面相关时,scrapy 就无法连接,并且我会得到上述日志文件输出。

我可能忽略了一些对于经验丰富的爬虫来说非常明显的事情,这阻碍了我与 scrapy 的联系。我尝试遵循这些线程中的一些建议:

https://github.com/scrapy/scrapy/issues/1429

https://github.com/requests/requests/issues/4458

https://github.com/scrapy/scrapy/issues/2717

但是,其中有些内容有点超出我的理解范围,例如如何更新密码列表等。我认为这是某种认证问题,但是 scrapy 再次能够连接到该域上的其他 URL,所以我不知道。

我用来测试这一点的代码非常基本,但无论如何:

import scrapy

class Test(scrapy.Spider):


start_urls = [
'https://www.totaljobs.com/job/welder/jark-wakefield-job79229824'
,'https://www.totaljobs.com/job/welder/elliott-wragg-ltd-job78969310'
,'https://www.totaljobs.com/job/welder/exo-technical-job79019672'
,'https://www.totaljobs.com/job/welder/exo-technical-job79074694'
]

name = "test"

def parse(self, response):
print 'aaaa'
yield {'a': 1}

上述代码中的网址连接成功。

以下代码中的网址已成功连接。

import scrapy

class Test(scrapy.Spider):


start_urls = [
'https://www.totaljobs.com/jobs/permanent/welder/in-uk'
,'https://www.totaljobs.com/jobs/permanent/mig-welder/in-uk'
,'https://www.totaljobs.com/jobs/permanent/tig-welder/in-uk'
]

name = "test"

def parse(self, response):
print 'aaaa'
yield {'a': 1}

如果有人可以复制此行为(或视情况而定)并让我知道,那就太好了。如果我应该提交更多详细信息,请告诉我。如果我忽略了一些非常明显的事情,我深表歉意。我正在使用:

Windows 7 64 位

Python 2.7

scrapy版本1.5.0

扭曲版本17.9.0

openSSL 版本 17.5.0

lxml 版本 4.1.1

最佳答案

您可以尝试设置用户代理,看看是否会改变情况。

您还可以尝试在请求之间或通过代理执行具有较大延迟的请求。

由于它是一个招聘网站,我想他们有某种反抓取机制。

这不是一个令人惊奇的答案,但我可以与您分享一些见解,也许可以帮助您确定下一步的步骤。

关于python - Scrapy - 连接以非干净的方式丢失。跨单个域不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48329534/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com