Python3 Scrapy框架学习二:爬取豆瓣电影Top250

举报
悦来客栈的老板 发表于 2020/12/29 00:25:00 2020/12/29
【摘要】 打开项目里的items.py文件,定义如下变量, import scrapyfrom scrapy import Item,Field class DoubanItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() movie = Field() yea...

打开项目里的items.py文件,定义如下变量,


  
  1. import scrapy
  2. from scrapy import Item,Field
  3. class DoubanItem(scrapy.Item):
  4. # define the fields for your item here like:
  5. # name = scrapy.Field()
  6. movie = Field()
  7. year = Field()
  8. star = Field()
  9. vote = Field()
  10. quote = Field()

然后打开项目里的spiders文件夹内的doubanTop250.py文件。


  
  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from douban.items import DoubanItem
  4. class Doubantop250Spider(scrapy.Spider):
  5. name = 'doubanTop250'
  6. #allowed_domains = ['movie.douban.com/top250/'] 这里需要修改下,涉及爬取下一页的关键
  7. allowed_domains = ['movie.douban.com']
  8. start_urls = ['http://movie.douban.com/top250/']
  9. def parse(self, response):
  10. infos = response.css('.info')
  11. for info in infos:
  12. item = DoubanItem()
  13. item['movie'] = info.css('.title::text').extract_first().strip()
  14. item['year'] = info.css('div p[class = ""]::text').re_first('\d+') #正则的用法
  15. item['vote'] = info.css('.rating_num::text').extract_first().strip()
  16. item['star'] = info.css('.star span::text').extract()[-1].strip() #获取最后一项
  17. item['quote'] = info.css('.inq::text').extract_first().strip()
  18. yield item
  19. next = response.css('.next a::attr("href")').extract_first() #查找下一页的链接
  20. url = response.urljoin(next)
  21. yield scrapy.Request(url = url,callback = self.parse) #解析下一页

打开settings.py文件,加入如下两行代码:


  
  1. USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
  2. FEED_EXPORT_ENCODING = 'gbk'

然后在命令提示符输入:

scrapy crawl doubanTop250 -o douban.csv
 

爬取结束后会生成一个csv文件,效果图如下:

 

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/82935403

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。