本文内容是通过Pycharm来进行实操
创建项目的虚拟环境,目的是为了不让其他的环境资源干扰到当前的项目
本文将以豆瓣作为手把手学习参考,网址:https://movie.douban.com/top250,1. 进入Terminal终端,安装我们需要的scrapy模块
pip install scrapy
2. 通过pycharm进入Terminal终端,输入我们接下来打算创建的项目,以myspider为例
创建完之后会生成对象的目录myspider
创建我们想要爬取的蜘蛛名--可以理解为想要爬取的数据来源名字,比如本文是豆瓣
#Termianl终端输入
#先进入我们的项目目录
cd myspider
#创建蜘蛛,scrapy genspider +<爬虫名字> + <允许爬取的域名>
scrapy genspider douban movie.douban.com
当我们创建完我们的蜘蛛名后,会在spiders里面生成对应的文件名douban.py
如上图,我们的spider子类scrapy.Spider定义了一些属性和方法
name:标识蜘蛛,在一个项目中必须是唯一的
allowed_domains:允许爬取的范围
start_urls:必须返回请求的可迭代(请求列表或者编写生成器函数),我们的爬行器将从该请求开始爬行。后续请求将从这些初始请求中相继生成。
parse():用来编写数据提取,会解析响应,将抓取的数据提取为字典
在items文件中编写我们想要爬取的字段
import scrapy
class MyspiderItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field() # 标题
rating = scrapy.Field() # 评估
quote = scrapy.Field() # 概述
#brief_introduction = scrapy.Field() #剧情简介
ROBOTSTXT_OBEY
ROBOTSTXT_OBEY = False
设置为False
DEFAULT_REQUEST_HEADERS
模拟网页登陆的请求头信息
DEFAULT_REQUEST_HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
}
设置日志输出信息
LOG_LEVEL = 'WARNING' # 设置日志显示的等级为WARNING
LOG_FILE = './log.txt' # 将日志信息全部记录到log.txt文件中
编写douban.py文件
import scrapy
# 自定义spider,继承scrapy.spider
class DoubanSpider(scrapy.Spider):
# 爬虫名字
name = "douban"
# 允许爬取的范围,防止爬虫爬到别的网站
allowed_domains = ["movie.douban.com"]
#开始爬取的url地址
start_urls = ["https://movie.douban.com/top250"]
def parse(self, response):
# scrapy的response对象可以直接进行xpath
li_list = response.xpath('//div[@id="content"]//ol/li')
for li in li_list:
#创建一个数据字典,用来存储信息
item = {}
item["title"] = li.xpath(".//div[@class='hd']/a/span[1]/text()").extract_first()
item['rating'] = li.xpath('.//div[@class="bd"]/div/span[2]/text()').extract_first()
item['quote'] = li.xpath('.//div[@class="bd"]//p[@class="quote"]/span/text()').extract_first()
print(item)
#运行name对应的名字
scrapy crawl douban