微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从此弹出窗口中抓取文本? [Python 和 Scrapy]

如何解决如何从此弹出窗口中抓取文本? [Python 和 Scrapy]

请注意 - 我非常缺乏经验,这是我的第一个“真正”项目。

我将尽我所能解释我的问题,如果某些术语不正确,请道歉。

我正在尝试抓取以下网页 - https://www.eaab.org.za/agent_agency_search?type=Agents&search_agent=+&submit_agent_search=GO

我可以抓取“名称”和“状态”,但我还需要在“完整详细信息”弹出窗口中获取一些信息。

我注意到当点击“完整详细信息”按钮时,URL 保持不变。

下面是我的代码

import scrapy
from FirstScrape.items import FirstscrapeItem

class FirstSpider(scrapy.Spider):
    name = "spiderman"
    start_urls = [
        
        "https://www.eaab.org.za/agent_agency_search?type=Agents&search_agent=+&submit_agent_search=GO"
        
        ]
    
    def parse(self,response):
        item = FirstscrapeItem()
        item['name'] = response.xpath("//tr[@class='even']/td[1]/text()").get()
        item['status'] = response.xpath("//tr[@class='even']/td[2]/text()").get()
        #first refers to firstname in the popup window
        item['first'] = response.xpath("//div[@class='result-list default']/tbody/tr[2]/td[2]/text()").get()
        
        
        return item

我从终端启动我的代码并将其导出为 .csv 文件

不确定这是否有帮助,但这是弹出/花式框窗口:

popup window

我需要使用 Selenium 来点击按钮还是我只是遗漏了什么?任何帮助将不胜感激。

我非常渴望了解有关 Python 和抓取的更多信息。

谢谢。

解决方法

这是您需要从起始页中提取的 URL:

<a href="/listing_detail.php?agents_id=169039" class="agent-detail">Full Detail</a>

要获取弹出窗口的内容,请打开此提取的 URL 作为另一个请求。

,

Full Detail 中,您有 href 属性,您需要获取此 URL 并发出请求。 或许对你有帮助:

import scrapy
from scrapy.crawler import CrawlerProcess

class FirstSpider(scrapy.Spider):
    name = "spiderman"
    start_urls = [
        
        "https://www.eaab.org.za/agent_agency_search?type=Agents&search_agent=+&submit_agent_search=GO"
        
        ]
    
    def parse(self,response):
                
        all_urls = [i.attrib["href"] for i in response.css(".agent-detail")]
        for url in all_urls:
            yield scrapy.Request(url=f"https://www.eaab.org.za{url}",callback=self.parse_data)
        
    def parse_data(self,response):
        print(response.css("td::text").extract())
        print("-----------------------------------")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。