python scrapy框架爬虫豆瓣t250
安装scrapy pip包的管理工具
pip install scrapy(在cmd中下载我这里已经下载好了不再赘述);
首先我们创建一个文件使用 cd 命令来将创建好的文件夹拖进命令行中;
输入命令行以后我们发现文件夹中有文件 scrapy startproject douban250Spider
切换到指定目录 cd douban250Spider/douban250Spider
我们查看豆瓣250的网址,使用命令 scrapy genspider douban250 "movie.douban.com/top250"
我们可以打开文件夹来查看是否成功出现douban250文件则证明创建成功;
使用python来打开文件
这个报错直接找设置给好环境
鼠标点到用alt+enter安装就好
打开items文件输入下面的代码
movieImg = scrapy.Field()
movieName = scrapy.Field()
movieAuthor = scrapy.Field()
movieYear = scrapy.Field()
movieCountry = scrapy.Field()
movieType = scrapy.Field()
差不多和java中的mysql增删改查差不多一样。
将settings.py的第17行给修改为下面的(重要)
。
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0"
将下列代码粘贴到spiders下的quotes.py
。
movies =response.xpath("//div[@class='item']")
for movie in movies:
item =Db250SpiderItem()
txt=movie.xpath("div[@class='info']/div[@class='bd']/p/text()").extract()
author = txt[0].split()[1]
year = txt[1]
country=txt[1]
mType = txt[1]
start_Index = year.find('/')
end_index = year.find('/',start_Index+1)
year = year[:start_Index].split()[0]
country =country[start_Index+1:end_index].split()
mType=mType[end_index+1:].split()
item["movieImg"]=movie.xpath("div[@class='pic']/a/img/@src").extract_first()
item["movieName"]=movie.xpath("div[@class='info']/div[@class='hd']/a/span[1]/text()").extract_first()
item["movieAuthor"]=author
item["movieYear"]=year
item["movieCountry"]=country
item["movieType"]=mType
yield item
next_page =response.xpath("//span[@class='next']/a/@href").extract_first()
if next_page:
yield scrapy.Request(url=response.urljoin(next_page),callback=self.parse)
我们可以发现我们想要的每一个路径都和想要的字段相同,爬虫大概就是在网站中找路径的过程
yield为迭代器下一页一页只有25条,用下一页会不断爬出数据直到爬完为止。
如果中间会报错的话你需要做的是将你自己的items中的类名给拷贝过来它为我们插入的包
这个就是路径问题左上角的小灯泡会帮你写,和 idea 一样。
from douban250Spider.douban250Spider.items import Douban250SpiderItem
报错的话可以导这个包(本人亲测好用,因为我也报错了)。
item中的类
做完这些点运行不会报错
在命令行使用生成json文件
scrapy crawl douban250 -o douban250.json。
路径不对但是爬出数据了尴尬
,还是路径错误
在我看来爬虫是一个在网站上找路径的游戏,路径找到就会出数据
至于为什么我们要用scrapy框架,因为这是上手最快的方法。对初学者友好。