文章目录
Scrapy 爬虫: 首先要运行scrapy肯定需要下载组件 创建一个Scrapy项目 各组件配置Scrapy 爬虫:
新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 明确目标 (编写items.py):明确你想要抓取的目标 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页 存储内容 (pipelines.py):设计管道存储爬取内容首先要运行scrapy肯定需要下载组件
在Pycharm的terminal里运行如下命令,下载Scrapy
pip install Scrapy
创建一个Scrapy项目
#scrapy startproject 项目名
scrapy startproject qqmusic
创建好了之后如下图所示(QQMusicSpider.py和QQMusicSpider2.py是自己创建的
 下面来简单介绍一下各个主要文件的作用:
 scrapy.cfg: 项目的配置文件。
 qqmusic/: 项目的Python模块,将会从这里引用代码。
 qqmusic/items.py: 项目的目标文件。
 qqmusic/pipelines.py: 项目的管道文件。
 qqmusic/settings.py: 项目的设置文件。
 qqmusic/spiders/: 存储爬虫代码目录。
各组件配置
item.py
import scrapy
class QqmusicItem(scrapy.Item):
    song_name = scrapy.Field()  # 歌曲
    album_name = scrapy.Field()  # 唱片专辑
    singer_name = scrapy.Field()  # 歌手
    interval = scrapy.Field()  # 歌曲时长
settings.py
#原来是True,改为False
ROBOTSTXT_OBEY = False
#下载等待时间 默认为3秒,去掉注释
DOWNLOAD_DELAY = 3
 QQMusicSpider2.py
from scrapy import Request
from scrapy.spiders import Spider
from ..items import QqmusicItem
import json  # 引入json库
class MusicSpider(Spider):
    name = "music2"
    pass
    def start_requests(self):
        url = "https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?&topid=4"
        yield Request(url)
    def parse(self, response):
        json_text = response.text  # json格式化
        music_dict = json.loads(json_text)  # 加载json文件
        for one_music in music_dict["songlist"]:
            item = QqmusicItem()
            # 获取歌曲名称
            item["song_name"] = one_music["data"]["songname"]
            # 获取唱片
            item["album_name"] = one_music["data"]["albumname"]
            # 获取歌手
            item["singer_name"] = one_music["data"]["singer"][0]["name"]
            # 获取时长
            item["interval"] = one_music["data"]["interval"]
            yield item
init.py:注意是第二个qqmusic里的,不是spiders目录里的init.py
from scrapy import cmdline
cmdline.execute("scrapy crawl music2 -o music2.csv".split())
# 当然你也可以在terminal里运行scrapy crawl music2 -o music2.csv
爬取完成会生成music2.csv文件