Обратите внимание - у меня очень мало опыта, и это мой первый "настоящий" проект.
Я попытаюсь объяснить свою проблему как можно лучше, извините, если некоторые термины неверны.
Я пытаюсь очистить следующую веб-страницу - 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 и парсинге.
Спасибо.
Это 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("-----------------------------------")
Хорошо, я вижу. Спасибо за помощь, Лукас.