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

2024-09-30 12:17:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我会尽我所能解释我的问题,如果有些术语不正确,我会道歉

我正在尝试刮取以下网页-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和刮片的知识

多谢各位


Tags: texthttpsorgsearchgetresponsewwwitem
2条回答

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("                 -")

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

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

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

相关问题 更多 >

    热门问题