Saya baru menggunakan Scrapy. Tanggapan saya akan memiliki struktur ini.

<div class="padb-property-card">
<div class="padb-listing-id">
    <span>Listing ID: </span>777247      </div>
<div class='padb-ribbon padb-ribbon-not-sold'><span>Not sold</span></div>
</div>
<div class="padb-property-card">
<div class="padb-listing-id">
    <span>Listing ID: </span>777248      </div>
<div class='padb-ribbon padb-ribbon-sold-post'><span>Sold Post</span></div>
</div>
<div class="padb-property-card">
<div class="padb-listing-id">
    <span>Listing ID: </span>777249      </div>
<div class='padb-ribbon padb-ribbon-sold'><span>Sold</span></div>
</div>

Saya bisa menggunakan ini

response.xpath("//*[contains(@class, 'padb-ribbon') and contains(@class, 'padb-ribbon-sold')]").extract()

Untuk mencari hasil penjualan, tetapi kelasnya berbeda berdasarkan hasil lelang properti. Ada tiga tipe kelas yang berbeda padb-ribbon-not-sold, padb-ribbon-sold-post, padb-ribbon-sold. Bagaimana cara menangkap ini secara berurutan?

0
ds_user 5 Agustus 2019, 13:05

1 menjawab

Jawaban Terbaik

Anda dapat mencoba xpath berikut untuk mendapatkan status terjual untuk setiap daftar:

sold_status = response.xpath('//*[starts-with(@class,"padb-ribbon")]/span/text()').extract_first()

Tidak yakin seperti apa struktur halaman, tetapi jika Anda perlu mengulang kartu properti, Anda dapat melakukan sesuatu seperti ini:


property_xpaths = response.xpath('//*[@class="padb-property-card"]/div')
for property_xpath in property_xpaths:
    sold_status = property_xpath.xpath('//*[starts-with(@class,"padb-ribbon")]/span/text()').extract_first()
0
Wim Hermans 6 Agustus 2019, 14:13