Я очищаю этот сайт:
https://doctor.webmd.com/find-a-doctor/specialty/psychiatry/arizona/phoenix
Из этого списка я загружаю и очищаю данные для каждого доктора.
Значения в результатах выглядят хорошо, но формат - нет, поскольку в каждой записи есть пустая строка. Это код, который я использую:
import scrapy
class MainSpiderSpider(scrapy.Spider):
name = 'main_spider'
#allowed_domains = [''link'']
start_urls = ['https://doctor.webmd.com/find-a-doctor/specialty/psychiatry/arizona/phoenix?pagenumber=1']
def parse(self, response):
doctors_urls = (response.xpath('//*[@class="doctorName"]//@href').extract())
for doctor in doctors_urls:
doctor = response.urljoin(doctor)
print (doctor)
yield scrapy.Request(url=doctor,callback=self.parse_doctor)
next_page = response.xpath('//*[@id="next-onRight"]//@href').extract_first()
if next_page:
next_page = response.urljoin(next_page)
yield scrapy.Request(url=next_page,callback=self.parse)
def parse_doctor(self,response):
yield {"Name": response.xpath('//*[@class="header"]//*[@itemprop="name"]//text()').extract_first(),
"Speciality":response.xpath('//*[@itemprop="medicalSpecialty"]//*[@itemprop="name"]//text()').extract_first(),
"Years of experience":response.xpath('//*[@class="profile-content"]//*[@class="subheader content-body years"]//text()').extract_first(),
"Employer": response.xpath('//*[@class="address"]//*[@class="practice"]//text()').extract_first(),
"Address": response.xpath('//*[@itemprop="address"]//*[@itemprop="streetaddress"]//text()').extract(),
"City": response.xpath('//*[@itemprop="address"]//*[@itemprop="addressLocality"]//text()').extract(),
"Url": response.url}
И вот что я получаю:

А это опции текстового редактора:

Кроме того, заголовок дважды появляется в первых строках: