Как я могу очистить текст из этого всплывающего окна? [Питон и Скрейпи]

Обратите внимание - у меня очень мало опыта, и это мой первый "настоящий" проект.

Я попытаюсь объяснить свою проблему как можно лучше, извините, если некоторые термины неверны.

Я пытаюсь очистить следующую веб-страницу - 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.

Не уверен, что это поможет, но это всплывающее/причудливое окно:

всплывающее окно

Мне нужно использовать Selenium, чтобы нажать на кнопку, или я просто что-то упускаю? Любая помощь будет оценена.

Я очень хочу узнать больше о Python и парсинге.

Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
1 184
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это URL-адрес, который вам нужно извлечь из вашей стартовой страницы:

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

Чтобы получить содержимое всплывающего окна, откройте этот извлеченный URL-адрес в качестве другого запроса.

Хорошо, я вижу. Спасибо за помощь, Лукас.

Vilje Visser 26.12.2020 15:33
Ответ принят как подходящий

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

Другие вопросы по теме