Python 如何在Scrapy上递归获取类别及其内容
当我运行我的抓取代码来抓取这个网站时。我在我的csv文件中的一列上获取我的信息(ilan_bilgileri)。我想在不同的列上递归获取信息类别及其内容(每个广告有不同的类别和不同的位置)。最好的方法是什么?我对scrapy和python是新手,希望有人能给我指出正确的方向。我不允许在帖子上放图片,所以这里是csv结果的链接。这是我的蜘蛛代码:Python 如何在Scrapy上递归获取类别及其内容,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,当我运行我的抓取代码来抓取这个网站时。我在我的csv文件中的一列上获取我的信息(ilan_bilgileri)。我想在不同的列上递归获取信息类别及其内容(每个广告有不同的类别和不同的位置)。最好的方法是什么?我对scrapy和python是新手,希望有人能给我指出正确的方向。我不允许在帖子上放图片,所以这里是csv结果的链接。这是我的蜘蛛代码: class HurriyetEmlak(scrapy.Spider): name = 'hurriyetspider' start_ur
class HurriyetEmlak(scrapy.Spider):
name = 'hurriyetspider'
start_urls = ['https://www.hurriyetemlak.com/istanbul-adalar-maden-satilik/daire/82579-379']
custom_settings={ 'FEED_URI': "hurriyet_son.csv",
'FEED_FORMAT': 'csv'}
def parse(self, response):
il = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "short-info-list", " " ))]//li[(((count(preceding-sibling::*) + 1) = 1) and parent::*)]/text()').extract()
ilce = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "short-info-list", " " ))]//li[(((count(preceding-sibling::*) + 1) = 2) and parent::*)]/text()').extract()
mahalle = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "short-info-list", " " ))]//li[(((count(preceding-sibling::*) + 1) = 3) and parent::*)]/text()').extract()
fiyat = response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "price", " " ))]/text()').extract()
baslik = response.css('.txt::text').extract()
deger = response.css('.adv-info-list div span , .txt+ span::text').extract()
scraped_info = {
'İl': il,
'İlçe' : ilce,
'Mahalle' : mahalle,
'Fiyat' : fiyat,
'İlan Bilgileri - Başlık': baslik,
'İlan Bilgileri - Değer' : deger
}
yield scraped_info ```
我猜您是在尝试将所有列信息写入一列,而不是一行。如果您将使用默认的CSV进行爬网,如
scrapy crawl Hurriyet -o hurriyet_son.csv
它将像您那样将所有信息写入一行。我认为CSV库将帮助您。你可以用它来做,就像它是一个标题一样,而不满足于下面的代码
import csv
news_titles=[]
for new in scraped_info:
news_titles.append(new.text)
print (news_titles)
with open('hurriyet_son.csv', 'yeni') as f:
writer csv.writer(f)
writer.writerow(news_titles)
f.close()
让我知道你的最新信息。事实上,我不想把所有信息都写在一行中。我试图在列上获取信息类别,并在列下获取相关信息。但有些广告的类别不同于其他广告。这就是为什么我认为我应该递归地这样做