注意:此处为主代码,,还需要设置一些,具体请参考下面基本步骤的内容
# -*- coding: utf-8 -*-
# -*- coding:utf-8 -*-
#爬虫框架:Scrapy PySpider Selenium(其中1,3必须会)
#其中Selenium自动测试的一个框架
#打开项目步骤(项目在桌面):看图片
#如果文件夹下存在__init__文件,,证明是一个包,删除就变成一个普通的文件夹
#.............仍是爬取天堂图片网..................
#在终端创建项目(看老师发的图片) scrapy startproject IvskySpider
#创建文件,不在终端,在pycharm终端,,看图片,
#打开文件
#注意:爬虫名称必须唯一,一般不改
#2.域名如果不存在,就不会爬取
#3.网址一般需要手动重新设置,可以存放多个网址
import scrapy
import os
import requests
#
#一个点(.)表示当前文件所在文件夹,两个点表示文件夹的文件夹
from ..items import ImgInfoItem
#此处不用导入,因为scrapy框架自带一种解析方式,基于lxml
#from lxml import etree
class IvskySpider(scrapy.Spider):
name = 'ivsky'
allowed_domains = ['ivsky.com']
start_urls = ['http://www.ivsky.com/tupian/ziranfengguang/']
def parse(self, response):
#这里的response跟之前的不是太一样,没有content属性
# print(response.text)
#常规写法,调用函数
# self.parse_big_category(response)
#框架中的写法,用yield调用函数节省时间
"""
参数一:url,爬取的网址
参数2:callback回调,当网页下载好之后传给谁去解析
参数三:method,默认get
hesders
cookies
meta
"""
#解析大分类
yield scrapy.Request(
url=response.url,
#注意:此处不带圆括号
callback=self.parse_big_category,
#scrapy会自动过滤已经爬过的地址,因此设置为true,表示不过滤
dont_filter=True,
)
#解析大分类
def parse_big_category(self,response):
"""
解析网页大分类
:param response:
:return:
"""
#以下三种解析方式都可以用,但是推荐使用xpath
# response.selector.xpath()
#以上一句简写
big_a_list = response.xpath("//ul[@class='tpmenu']/li/a")
for big_a in big_a_list[1:]: