Issue
I am scraping the address but they will provide me none these is a page link https://www.baroulconstanta.ro/tabloul-avocatilor/avocati-definitivi/
import scrapy
from scrapy.http import Request
class TestSpider(scrapy.Spider):
name = 'test'
start_urls=["https://www.baroulconstanta.ro/tabloul-avocatilor/avocati-definitivi/"]
def parse(self, response):
address=response.xpath("//div[@class='col-md-12']//p[1]//text()[2]").get()
print(address)
Solution
You are getting empty output because data is generating from external via ajax request as post method. So you have to use API url
from scrapy.crawler import CrawlerProcess
from scrapy.http import Request
class TestSpider(scrapy.Spider):
name = 'test'
def start_requests(self):
yield Request(
url= "https://www.ifep.ro/Justice/Lawyers/LawyersPanel.aspx?CompanyId=1115&CurrentPanel=Definitivi&HideHeader=1&HideFooter=1&HideFilters=1",
callback=self.parse,
method= "POST",
headers= {
'content-type': 'application/x-www-form-urlencoded',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',
'x-microsoftajax':'Delta=true',
'x-requested-with': 'XMLHttpRequest'
}
)
def parse(self, response):
for address in response.xpath('//*[@class="list-group"]'):
print(''.join([x.get() for x in address.xpath('.//p/text()[2]')]).replace('\r\n\t','').strip())
if __name__ == "__main__":
process =CrawlerProcess()
process.crawl(TestSpider)
process.start()
Output:
Sediu principal în Baroul Constanţa, adresă: NAVODARI STR .CONSTANTEI NR. 15 BL, E 1, SC. A, APRT.14
Sediu principal în Baroul Constanţa, adresă: CONSTANTA STR. BOGDAN VODA NR. 63 A
Sediu principal în Baroul Constanţa, adresă: NAVODARI CARTIER MAMAIA SAT STR. M 10 , NR. 26 CSediu principal în Baroul Constanţa, adresă: CONSTANŢA BD. FERDINAND NR. 26
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. VASILE PARVAN NR. 5
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. MIRCEA NR. 181, BL. M S 3 B, SC. B, AP. 38
Sediu principal în Baroul Constanţa, adresă: CONSTANTA STR. ILEANA COSANZEANA NR. 18
Sediu principal în Baroul Constanţa, adresă: CONSTANTA STR.PESCARILOR NR. 35 BL. fz 14, APRT.
51
Sediu principal în Baroul Constanţa, adresă: CONSTANTA BD. TOMIS NR. 46 , ET.2 ,CAMERA 29
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. NICOLAE MILESCU NR. 57 BL. P N 2 , SC.A ,APRT. 42
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA BD.FERDINAND NR. 87, BL. A 4, SC. A. APRT. 1
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. CĂLĂRAŞI NR. 46 ET. 1
Sediu principal în Baroul Constanţa, adresă: CONSTANTA STR. CONSTANTIN BOBESCU NR. 23, BL C, AP. 6
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. DIMITRIE BOLINTINEANU NR. 32 A
Sediu principal în Baroul Constanţa, adresă: CONSTANŢA STR. NEHOIULUI NR. 37
Answered By - F.Hoque
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.