1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称

从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称

时间:2019-11-01 14:02:36

相关推荐

从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称

此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)

本人博客所有文章纯属学习之用,不涉及商业利益。不合适引用,自当删除!

若被用于非法行为,与我本人无关

scrapy初体验

Scrapywindows下scrapy安装pippycharm settinganaconda下安装scrapy创建豆瓣电影评论scrapy实战代码运行情况

Scrapy

scrapy作为爬虫的框架可以说是方便了很多,至少不用手搓requests,从而模块化的进行爬虫开发。scrapy的模块展示图如下 scrapy各个模块及作用如下。Spiders爬虫模块:构建起始请求并响应数据解析,主要为提取URL封装请求并且提取数据。Scheduler调度器模块:缓存请求并实现请求去重。Downloader下载器模块:发送请求, 获取响应数据,封装为Response。Item Pipeline管道模块:处理数据, 比如将数据保存在指定路径。ScrapyEngine引擎模块:作为运行过程的总指挥, 负责模块之间调度, 以及数据传递。Download Middlewares下载器中间件:在引擎和下载器之间, 可以对请求和响应数据进行处理, 比如: 实现随机代理IP, 随机User-Agent。爬虫中间件:爬虫和引擎之间,可以对请求和响应数据进行处理,比如过滤。Scrapy运转流程: 1)调度器从待下载链接中取出一个链接(URL);2)调度器启动爬虫模块;3)爬虫模块把URL传给下载器进行资源下载;4)提取目标数据,抽取出目标对象,则交给实体管道进行进一步的处理;比如存入数据库、文本;5)若是解析出的是链接(URL),则把URL插入到待爬取队列当中。

windows下scrapy安装

pip

pip install scrapy

pycharm setting

直接进入setting如何进入intepreter搜索scrapy然后安装就好了

anaconda下安装

这边先创建一个新的anaconda环境

conda create -n environment_name python=X.X

创建成功后

conda activate environment

然后安装scrapy

conda install scrapy

scrapy创建

在对应的环境下,进入了指定目录后

scrapy startproject projectname

然后进入爬虫目录

cd projectname

进入后创建爬虫

scrapy genspider baidu

这边的baidu是爬虫类名,然后是爬取目的url这个url可以随意输入,后续可以在代码中改动

豆瓣电影评论scrapy实战

在对应的环境下,进入了指定目录后

scrapy startproject projectname

可以看到创建成功了

下一步创建爬虫

settings.py 是spdier项目的配置文件

这边我们需要改动一下robots协议并添加一下cookie请求

这个 还有这个

和这个

代码

spider

import timeimport scrapyfrom bs4 import BeautifulSoupfrom ..items import DoubanConmentScrapyItemclass SpiderSpider(scrapy.Spider):name = 'spider'allowed_domains = ['']def start_requests(self):URL = []for i in range(0,2):urls ='/subject/3742360/comments?start={}&limit=20&status=P&sort=new_score'.format(i*20)URL.append(urls)for url in URL:time.sleep(2)yield scrapy.Request(url=url,callback=self.parse)print('@@@@@@@@@@@@@@@@@@@')def parse(self, response):r=response.textsoup = BeautifulSoup(r, 'lxml')all = soup.find_all('div', {'class': 'comment'})i=0for every in all:i=i+1data = []comment = every.find('span', {'class': 'short'}).textvote = every.find('span', {'class': 'votes vote-count'}).textinfo = every.find('span', {'class': 'comment-info'})author = info.find('a').textscore = info.find_all('span')[1]['class'][0][-2]times = info.find('span', {'class': 'comment-time'})['title']item=DoubanConmentScrapyItem()item['com_comment'] = commentitem['com_vote'] = voteitem['com_author'] = authoritem['com_score'] =scoreitem['com_times'] =timesdata.append(item)yield item

items.py

# Define here the models for your scraped items## See documentation in:# /en/latest/topics/items.htmlimport scrapyclass DoubanConmentScrapyItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()com_comment = scrapy.Field()com_vote = scrapy.Field()com_author = scrapy.Field()com_score = scrapy.Field()com_times = scrapy.Field()

pipe

import csvclass DoubanConmentScrapyPipeline(object):def process_item(self, item, spider):data=[]result=[]with open("film.csv", "a", encoding="gb18030", newline="") as csvfile:writer = csv.writer(csvfile)for key in item:data.append(item[key])result.append(data)writer.writerows(result)return item

运行情况

可以看到爬取下来的豆瓣短评被保存在了csv中

拿下

从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称 内容 时间和评分)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。