python - Scrapy 仅返回字母列表中每个字母的第一项
问题描述
我对stackoverflow以及python和scrapy完全陌生。我需要抓取一些词汇表,到目前为止大多数都很好,但我正在为我在下面苦苦挣扎的那个发布脚本。我只得到每封信的第一个条目,我不知道为什么......非常感谢任何帮助!谢谢!网卡
这是代码:
import scrapy
class GlossarySpider(scrapy.Spider):
name = 'glossary'
allowed_domains = ['www.edmunds.com']
start_urls = ['https://www.edmunds.com/glossary/']
def parse(self, response):
results = response.xpath ("//div[@class='content']/dl")
for result in results:
title = result.xpath(".//dt/text()").get()
text = result.xpath(".//dd/text()").get()
yield{
'title': title,
'text': text
}
解决方案
您可以使用getall()
方法返回包含所有结果的列表。
顺便说一句,在获得结果列表后,您需要稍微修改代码以实际映射名称和它的定义。
获取列表后,您可以简单地对其进行迭代,然后写入 csv 文件。下面是一个例子:
with open('test.csv', 'a') as f:
csv_writer = csv.writer(f)
for result in results:
title = result.xpath(".//dt/text()").getall()
text = result.xpath(".//dd/text()").getall()
for i in range(len(title)):
csv_writer.writerow([title[i], text[i]])
推荐阅读
- c# - 如何从 YAML 数组切换到映射?
- angular - 如何从 div 中引用 ng-template?
- jenkins - 我可以从共享库中使用 jenkins post 步骤吗?
- java - 如何使用 Java 中的 math.random() 函数让计算机在我的 Connect4 游戏中选择随机列?
- mysql - 如何检测数据库断开连接,并使用 go-xorm 有效地重新连接 mysql、tiDB 等数据库?
- javascript - Web3如何调用返回字节32的方法?
- node.js - Mongoose 多文档事务不起作用
- javascript - MongoDB 仅返回来自其他文档的用户与字段不匹配的文档
- android - 在excel中添加三个数组时出现java.lang.IndexOutOfBoundsException
- unity3d - 如何使用 NativeList 之类的东西
>? 或任何其他替代方式?