请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

根据limit=5&offset=5去爬取回答,发现每个这样的url都是只爬取到了data中的第一个回答,接下来的4个回答都没有爬取到,这是什么原因?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def parse_answer(self, response):
    answer_item_loader = ZhihuItemLoader(item=ZhihuAnswerItem(), response=response)
    answer_dict = json.loads(response.text)
 
    is_end = answer_dict['paging']['is_end']
    next_answer_url = answer_dict['paging']['next']
 
    for answer in answer_dict['data']:
        create_time = answer['created_time']
        update_time = answer['updated_time']
        answer_id = answer['id']
        praise_nums = answer['voteup_count']
        answer_url = answer['url']
        author_id = answer['author']['id'if 'id' in answer['author'else ''
        question_id = answer['question']['id']
        question_create_time = answer['question']['created']
        question_update_time = answer['question']['updated_time']
        content = answer['content'if 'content' in answer['content'else answer['excerpt']
        comment_nums = answer['comment_count']
        crawl_time = datetime.now()
 
        answer_item_loader.add_value('answer_id', answer_id)
        answer_item_loader.add_value('question_id', question_id)
        answer_item_loader.add_value('answer_url', answer_url)
        answer_item_loader.add_value('author_id', author_id)
        answer_item_loader.add_value('content', content)
        answer_item_loader.add_value('praise_nums', praise_nums)
        answer_item_loader.add_value('comment_nums', comment_nums)
        answer_item_loader.add_value('create_time', create_time)
        answer_item_loader.add_value('update_time', update_time)
        answer_item_loader.add_value('crawl_time', crawl_time)
 
        answer_item = answer_item_loader.load_item()
        yield answer_item
 
    if is_end == False:
        yield scrapy.Request(next_answer_url, callback=self.parse_answer)


正在回答 回答被采纳积分+3

插入代码

1回答

bobby 2018-06-12 10:04:08

是返回的数据里面只有一条数据?还是你只能从返回的数据中获取到第一条数据?

0 回复 有任何疑惑可以回复我~
  • 提问者 Yan雪杉 #1
    只测试了一个问题,这个问题有3736个答案,现在知乎每页是存了5个答案,就相当于与748页,我只爬到了748个答案,就是每页中的第一个。。。后面4个都没有爬取到,我看爬取记录是每页都爬取了5次,但好像爬取的都是第一条记录,因为后面4条记录全部提示关键字冲突
    回复 有任何疑惑可以回复我~ 2018-06-12 10:25:01
  • bobby 回复 提问者 Yan雪杉 #2
    那其实问题已经比较明确了 实际上采集是返回了数据,但是因为每一页都都是主键冲突造成了 只有一个数据入库,所以你需要确定一下是哪个主键冲突了,然后看看是不是这一页的所有数据都是想同的主键
    回复 有任何疑惑可以回复我~ 2018-06-14 10:38:02
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号