python笔记之利用scrapy框架爬取糗事百科首页段子

环境准备:
  1. scrapy框架(可以安装anaconda一个python的发行版本,有很多库)
  2. cmd命令窗口
教程:
  1. 创建爬虫项目
scrapy startproject qq #创建了一个爬虫项目qq
  1. 在项目中创建爬虫文件
scrapy genspider -t basic qsbk qiushibaike.com  

-t: 后面跟爬虫模板
qiushibaike.com 是开始爬取的域名

  1. 由于我们在windows中操作,所以创建好后,我们可以使用Pycharm打开我们的爬虫项目qq ,然后在spiders文件夹中找到我们创建的爬虫文件qsbk.py
    编辑改文件
# -*- coding: utf-8 -*-
import scrapy   #调用scrapy框架
from qq.items import QqItem  #调用items.py中的容器
from scrapy import Request

class QsbkSpider(scrapy.Spider):
    name = 'qsbk'
    allowed_domains = ['qiushibaike.com']
    start_urls = ['http://qiushibaike.com/']

    def start_requests(self):
        ua = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) "
                            "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"}
        yield Request('http://qiushibaike.com/', headers=ua)
        #对浏览器进行伪装

    def parse(self, response):
        item = QqItem()
        item["content"] = response.xpath('//div[@class="content"]/span/text()').extract()
        item["link"] = response.xpath('//a[@class="contentHerf"]/@href').extract()
        yield item
#根据条件提取指定内容

编辑items.py文件,添加容器

import scrapy


class QqItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
     content = scrapy.Field() #添加容器content
     link = scrapy.Field()  #添加容器link

最后,我们在命令行调用该文件
进入到我们的项目下,输入命令

scrapy crawl qsbk

如果没有内容显示,我们可以尝试更改项目下的settings.py文件

将ROBOTSTXT_OBEY = False  改为False  

并将下面的内容去注释
ITEM_PIPELINES = {
   'qq.pipelines.QqPipeline': 300,
}

至此,我们利用框架进行简单爬虫就完成了!