环境准备:
- scrapy框架(可以安装anaconda一个python的发行版本,有很多库)
- cmd命令窗口
教程:
- 创建爬虫项目
scrapy startproject qq #创建了一个爬虫项目qq
- 在项目中创建爬虫文件
scrapy genspider -t basic qsbk qiushibaike.com
-t: 后面跟爬虫模板
qiushibaike.com 是开始爬取的域名
- 由于我们在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
编辑pipelines.py文件
class FirstPipeline(object):
def process_item(self, item, spider):
return item
最后,我们在命令行调用该文件
进入到我们的项目下,输入命令
scrapy crawl qsbk
如果没有内容显示,我们可以尝试更改项目下的settings.py文件
将ROBOTSTXT_OBEY = True 改为ROBOTSTXT_OBEY = False
并将下面的内容去注释
ITEM_PIPELINES = {
'qq.pipelines.QqPipeline': 300,
}
至此,我们利用框架进行简单爬虫就完成了!