认真是我们
参与这个社会的方式

知乎爬虫学习笔记

开始

导入 scrapy 模块, 并创建一个 spider 的 class. 并继承 scrapy.Spider。(使用默认模板就好)

parse函数

    def parse(self, response):
        urls = response.css('a::attr(href)').extract()
        urls = [parse.urljoin(response.url,url) for url in urls]
        for url in urls:
            re_match = re.match('(https://www.zhihu.com/question/([0-9]+))/?.*', url)
            if re_match:
                question_url = re_match.group(1)
                question_id = re_match.group(2)
                yield Request(question_url, callback=self.parse_questions, headers=self.headers, meta={'question_id': question_id})
            else:
                yield Request(url, callback=self.parse, headers=self.headers)

1.xpath()和css()方法返回的是SelectorList实例,是一个选择器列表,要使用.extract()方法来提取最终的数据。如果只想获得第一个匹配的,可以使用.extract_first()

2.scrapy中response提取的没有主域名的url拼接。url = parse.urljoin(response.url, get_url) 这里他把循环也写进去了

 

没有故事 也没有酒

点也没用点也没用