import scrapy from dangdang.items import DangdangItem from scrapy.http import Request import csv class DdSpider(scrapy.Spider): name = 'dd' allowed_domains = ['dangdang.com'] start_urls = ['http://category.dangdang.com/pg1-cid4008154.html'] def parse(self, response): item=DangdangItem() item["title"]=response.xpath("//a[@name='itemlist-picture']/@title").extract() item["link"]=response.xpath("//a[@name='itemlist-picture']/@href").extract() item["comment"]=response.xpath("//a[@name='itemlist-review']/text()").extract() yield item # 解析网页内容并获取数据 item = [] # 将数据写入csv文件 with open('data.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(['titlle', 'link', 'comment']) # 写入表头 for row in item: writer.writerow(row) #翻页,一直到80页 for i in range(2,81): url='http://category.dangdang.com/pg+'+str(i)+'-cid4008154.html' yield Request(url,callback=self.parse)这串代码爬取的内容写不进csv文件里怎么办
时间: 2023-12-06 15:43:29 浏览: 129
第八章:scrapy框架_第八章:scrapy框架.zip_
你需要将爬取到的数据item添加到一个列表中,然后再写入到csv文件中。你可以将代码修改如下:
```
import scrapy
from dangdang.items import DangdangItem
from scrapy.http import Request
import csv
class DdSpider(scrapy.Spider):
name = 'dd'
allowed_domains = ['dangdang.com']
start_urls = ['http://category.dangdang.com/pg1-cid4008154.html']
def parse(self, response):
item=DangdangItem()
item["title"]=response.xpath("//a[@name='itemlist-picture']/@title").extract()
item["link"]=response.xpath("//a[@name='itemlist-picture']/@href").extract()
item["comment"]=response.xpath("//a[@name='itemlist-review']/text()").extract()
yield item
# 将获取的数据添加到列表中
data = []
for i in range(len(item["title"])):
row = []
row.append(item["title"][i])
row.append(item["link"][i])
row.append(item["comment"][i])
data.append(row)
# 写入csv文件
with open('data.csv', 'a+', newline='') as csvfile:
writer = csv.writer(csvfile)
if csvfile.tell() == 0:
writer.writerow(['titlle', 'link', 'comment']) # 写入表头
for row in data:
writer.writerow(row)
#翻页,一直到80页
for i in range(2,81):
url='http://category.dangdang.com/pg'+str(i)+'-cid4008154.html'
yield Request(url,callback=self.parse)
```
这个代码中,我们将获取到的数据添加到了一个名为`data`的列表中,然后再将`data`写入到csv文件中。同时,我们在写入文件之前,判断文件指针位置,如果是0,说明是第一次写入,需要先写入表头。
阅读全文