当前位置: 首页 > 知识库问答 >
问题:

刮擦蜘蛛停止爬行

郎意
2023-03-14

我试着在一个. asp网站上运行一个蜘蛛,它需要登录授权和一些爬行到同一个网站内的不同页面。我昨天成功地使用我的蜘蛛登录,并正在用不同的功能抓取数据,当我在更改了as功能后再次运行蜘蛛时,蜘蛛停止了工作。我不知道发生了什么,我对网络抓取相当陌生。下面是代码:

import scrapy
from scrapy.http import FormRequest
from scrapy.utils.response import open_in_browser

class TourSpider(scrapy.Spider):
    name = 'data'
    start_url= ["https://www.translamex.com/partners/login.asp?ret_link=%2Fpartners%2FDefault%2Easp&type=notLogged"]
    url="https://www.translamex.com/"

    def parse(self, response):
        return FormRequest.from_response(response=response,
        clickdata={'id':'Login1Button_DoLogin'}, 
        formdata={
            'login':"username",
            'password':"password"
        }, callback=self.next_page)

    def next_page(self,response):
        next_page=response.css('a[title="View Rates / Tarifas"]::attr(href)').extract_first()
        rates = response.urljoin(next_page)
        yield scrapy.Request(url=rates, callback=self.start_scraping)

    def start_scraping(self,response):
        open_in_browser(response)
        for row in response.css("tr.Row"):
            yield {
            "destination": row.css("td::text")[0].extract(),
            "tour": row.css(".td::text")[1].extract(),
            "public_rate_adult":row.css(".td::text")[2].extract(),
            "public_rate_child":row.css(".td::text")[3].extract(),
            "rate_adult":row.css(".td::text")[4].extract(),
            "rate_child":row.css(".td::text")[5].extract()
            }

以下是日志:

020-01-08 22:55:13 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: Tour)
2020-01-08 22:55:13 [scrapy.utils.log] INFO: Versions: lxml 4.4.2.0, libxml2 2.9.9, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.7.5 (default, Oct 25 2019, 15:51:11) - [GCC 7.3.0], pyOpenSSL 19.1.0 (OpenSSL 1.1.1d  10 Sep 2019), cryptography 2.8, Platform Linux-4.15.0-72-generic-x86_64-with-debian-buster-sid
2020-01-08 22:55:13 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'Tour', 'FEED_FORMAT': 'json', 'FEED_URI': 'data.json', 'NEWSPIDER_MODULE': 'Tour.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['Tour.spiders']}
2020-01-08 22:55:13 [scrapy.extensions.telnet] INFO: Telnet Password: e98d8ad268ff9643
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.feedexport.FeedExporter',
 'scrapy.extensions.logstats.LogStats']
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2020-01-08 22:55:13 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Spider opened
2020-01-08 22:55:13 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-01-08 22:55:13 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Closing spider (finished)
2020-01-08 22:55:13 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'elapsed_time_seconds': 0.004019,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 1, 8, 22, 55, 13, 962196),
 'log_count/INFO': 10,
 'memusage/max': 54812672,
 'memusage/startup': 54812672,
 'start_time': datetime.datetime(2020, 1, 8, 22, 55, 13, 958177)}
2020-01-08 22:55:13 [scrapy.core.engine] INFO: Spider closed (finished)

代码曾经能够尝试从页面中抓取一些我想要的数据,但没有成功,但我相信这只是因为我使用了错误的css选择器。现在它只是打开和关闭而不做任何事情。

共有1个答案

计寒
2023-03-14

我解决了。我刚开始更改了url的分配。我必须创建一个新方法,如下所示:

    def start_requests(self):
         start_url= "https://www.translamex.com/partners/login.asp?ret_link=%2Fpartners%2FDefault%2Easp&type=notLogged"
         yield scrapy.Request(url=start_url, callback=self.parse)
 类似资料:
  • 我试图刮一个网站,并保存信息,我目前有两个问题。 首先,当我使用硒点击按钮(在这种情况下是加载更多结果按钮)时,它直到最后才点击,我似乎不知道为什么。 另一个问题是它没有保存到parse_article函数中的csv文件中。 以下是我的代码:

  • 我在这里和其他网站上读了很多关于scrapy的文章,但我无法解决这个问题,所以我问你:P希望有人能帮助我。 我想在主客户端页面中验证登录名,然后解析所有类别和所有产品,并保存产品的标题、类别、数量和价格。 我的代码: 当我在终端上运行scrapy爬行蜘蛛时,我得到以下信息: 刮痒的)pi@raspberry:~/SCRAPY/combatzone/combatzone/spiders$SCRAPY

  • 我无法更改分析方法中的爬行器设置。但这肯定是一种方式。 例如: 但是项目将由FirstPipeline处理。新项目参数不工作。开始爬网后如何更改设置?提前谢谢!

  • 我正试着测试这只痒痒的爬行蜘蛛,但我不明白它为什么不爬行。它应该做的是在wikipedia的数学页面上爬行一个深度级别,然后返回每个爬行页面的标题。我错过了什么?非常感谢您的帮助! 设置: 日志:

  • 简介 渗透测试可以通过多种途径完成,例如黑盒、灰盒和白盒。黑盒测试在测试者没有任何应用的前置信息条件下执行,除了服务器的 URL。白盒测试在测试者拥有目标的全部信息的条件下执行,例如它的构造、软件版本、测试用户、开发信息,以及其它。灰盒测试是黑盒和白盒的混合。 对于黑盒和灰盒测试,侦查阶段对测试者非常必然,以便发现白盒测试中通常由应用所有者提供的信息。 我们打算采取黑盒测试方式,因为它涉及到外部攻

  • 蜘蛛记录分为两部分: 时间筛选 和 蜘蛛记录 (详情) 1.时间筛选 便捷按钮有今日、昨日、前日、上周 X、近七天,并且能自定义选择时间段来得出想要的结果报表 2.蜘蛛记录 (时间段详情) 1)蜘蛛记录便是搜索引擎通过蜘蛛爬行所留下的痕迹,蜘蛛记录中的细分做的非常的详细, 包含蜘蛛IP地址、访问URL、蜘蛛类型、来访时间 2)搜索引擎爬取网页时,只有触发js统计代码才能被统计,故数据仅供参考