做了一下爬虫的作业 ,技术栈是scrapy为主,然后对爬取来的内容进行存储,存成csv格式,并进行分析且做出词云的效果
用pycharm,别用啥vscode,pycharm最好用
先创建一个scrapy项目,首先创建一个python项目,然后去终端输入指令 “scrapy startproject module”,其中module为模块名
这是我的项目结构 ,因为我爬取的是晋江,所以爬来的小说名字非常的沙雕
然后如果你没用命令行,是自己建的项目,那一定要加入这个.cfg文件,不然是跑不起来的。
然后middlewares.py是不用动的,自己只需要写pipeline,spider,items这三个,data和cloud是我用来分析的,和爬虫无关。
先看最简单的item把
可以写多个类对应不同的爬取结果
里面的每个属性都是随便设的,你需要爬取什么就加入什么
import scrapy
class MyscrapyItem(scrapy.Item):
# 小说名称
novelName = scrapy.Field()
# 作者名称
authorName = scrapy.Field()
# 小说内容页链接
novelContent = scrapy.Field()
class NovelItem(scrapy.Item):
description = scrapy.Field()
novelName = scrapy.Field()
Day1 = scrapy.Field()
Day2 = scrapy.Field()
Day3 = scrapy.Field()
Day4 = scrapy.Field()
Day5 = scrapy.Field()
然后我第一步是去网站里把vip金榜(?或许是这个)里的小说名称+作者名称+链接爬取过来
Myspider.py
import scrapy
from myscrapy.items import MyscrapyItem,NovelItem
class Spider(scrapy.Spider):
# 爬虫名
name = "myspider"
# 起始链接
start_urls = ['http://www.jjwxc.net/fenzhan/yq/']
name_list=[]
def parse(self, response):
# 开始爬取
print("spider start")
# 取出所有<li>标签中style=_width:183px;的标签
node_list = response.xpath("//li[@style='_width:183px;']")
next_url=[]
# 遍历list
for x in range(len(node_list)):
node=node_list[x]
# 创建item字段对象用来存储信息
item = MyscrapyItem()
# extract() : 将xpath对象转换为Unicode字符串
novelName = node.xpath("./a/@alt").extract()
self.name_list.append(novelName)
authorName = node.xpath("./a/label/text()").extract()
novelContent = node.xpath("./a/@href").extract()
# 对的到的信息进行一点加工,并放入item中
item['novelName'] = novelName[0].split(" ")[0]
item['authorName'] = authorName[0]
item['novelContent'] = "http://www.jjwxc.net/" + novelContent[0]
urls=item['novelContent']
next_url.append(item['novelContent'][0])