使用 shell 调试工具

$ scrapy shell https://itfun.tv/course_categories/front_end

若果发现出现 403 错误,说明站点开启了反爬虫,这时可以使用 User-Agent 伪装成浏览器

$ scrapy shell -s USER_AGENT='Chrome/75.0.3770.142' https://itfun.tv 

出现的状态为 200,就表示成功了。

获取需要的数据

接下来,就是要获取需要爬取的内容。这里需要先学习下 Xpath 的用法

表达式 说明
nodename 匹配此节点的所有内容
/ 匹配根节点
// 匹配任意节点位置
. 匹配当前节点
.. 匹配父节点
@ 匹配属性

使用 Xpath 匹配节点

使用 chrome 开发者工具检查 https://itfun.tv/course_categories/front_end 的源码,找到课程标题所在位置

课程列表

现在就要将所有的标题匹配出来,对应的 xpath

>>> response.xpath('//div[@id="courseList"]/div/a/div[@class="info"]/h3/text()').extract()

Tips: 使用 Xpath 方式,必须一级一级写下去,中间不能少任何一层

  • text(),是取出里面的文本
  • extract(),返回被选择元素的 unicode 字符串
  • extract_first(),返回第一个

使用 CSS 选择器匹配节点

>>> response.css('div#courseList .info .title::text').extract()

Tips: 直接支持 CSS 选择器的语法,可以使用 > 子元素选择器