我正在使用python 3.6x版本和scrapy来提取一些在线数据。
import scrapy
class QuotesSpider(scrapy.Spider):
name = "extract"
start_urls = [
'https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10174455955',
]
def parse(self, response):
question_title = response.css("div.ptsQes P::text").extract_first().strip()
question_content = response.css("div.ptsQes P.queTxt::text").extract()
best_answer = response.css("div.mdPstd.mdPstdBA.othrAns.lstLast.clrfx div.ptsQes p.queTxt::text").extract()
filename = 'extract.json'
with open(filename, 'wb') as f:
f.write(question_title.encode("utf8")),
f.write(question_content[0].encode("utf8")),
f.write(best_answer[0].encode("utf8"))
self.log('Saved file %s' % filename)
我曾尝试从上面编写的代码中提取数据,但如果有人愿意帮助,我会遇到几个问题。
如何将其制作成json格式,即[' question_title' :' XXX',' question_content':' XXX',' best_answer':' xxx']因为我只能得到一些字符串
为什么我不能在response.css ...之后放置编码(" utf8"),即
response.css(" div.ptsQes P ::文本" ......)extract_first()条()编码(" UTF8&#34)
它不起作用。 它没有编码任何数据,但留给我unicode。
如果有人知道的话,谢谢。
答案 0 :(得分:0)
使您的数据json格式化。我会使用内置的json库。
import json
json.dumps({'question_title' : question_title,
'question_content':'question_content',
'best_answer': 'best_answer'}).encode('utf8')