python - Python - 如何在 csv 文件中格式化 scrapy 数据?
问题描述
我是 python 和网络抓取的新手,我尝试将抓取数据存储到 csv 文件,但输出并不令人满意。
当前的 csv 输出:
Title Image
Audi,Benz,BMW Image1,Image2,Image3
我想如何在 csv 文件中查看它:
Title Image
Audi Image1
Benz Image2
BMW Image3
这是在终端中运行它的类型:
scrapy crawl testscraper -t csv -o test.csv
这是spider.py:
class TestSpiderSpider(scrapy.Spider):
name = 'testscraper'
page_number = 2
start_urls = ['https://jamaicaclassifiedonline.com/auto/cars/']
def parse(self, response):
items = scrapeItem()
product_title = response.css('.jco-card-title::text').extract()
product_imagelink = response.css('.card-image img::attr(data-src)').getall()
items['product_title'] = product_title
items['product_imagelink'] = product_imagelink
items.append('items')
yield items
他是 items.py 的代码:
class scrapeItem(scrapy.Item):
product_title = scrapy.Field()
product_imagelink = scrapy.Field()
pass
解决方案
您可以选择每个包含汽车的 div 元素,然后遍历这些元素,逐个生成它们。
def parse(self, response):
for car in response.css('.col.l3.s12.m6'):
item = scrapeItem()
product_title = car.css('.jco-card-title::text').get()
product_imagelink = car.css('.card-image img::attr(data-src)').get()
# Some of the elements don't contain a title or a image_link, like ads for example.
if product_title and product_imagelink:
item['product_title'] = product_title.strip().replace('\n', '')
item['product_imagelink'] = product_imagelink
yield item
推荐阅读
- python - 什么时候需要 plt.show() 来显示绘图,什么时候不需要?
- python - 如何遍历嵌套网页以进行网页抓取?
- azure - Set-AzureRmResource 抛出 api-version 错误
- twilio - 指定区域时,Twilio Rest api 客户端抛出 api 异常
- git - 在所有提交中用 LF 替换 CRLF
- elasticsearch - Elasticsearch:在文本末尾查找一个术语
- powershell - 编写、加密和解密 .csv 日志文件?
- indexing - 本体对 Marklogic 三重索引有影响吗?
- php - 图像未从 FormData 用 php 解析
- python - 每次数据更改时,如何在烧瓶应用程序中实时更新散景图?