文章目录
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文件