程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

scrapy入门-普通爬虫

发布于2019-08-20 10:23     阅读(789)     评论(0)     点赞(23)     收藏(2)


一顿骚操作:

scrapy startproject douban

cd douban

scrapy genspider douban_movie -t basic douban.com

生成项目文件:

 

爬取前250的相关数据, 打开相关url https://movie.douban.com/top250可以看到排行前25的数据。通过点击下一步,继续发现url发生了变化https://movie.douban.com/top250?start=25&filter=, 我们可以去掉&filter=,保留https://movie.douban.com/top250?start=25, 发现是可以对网站进行访问并得到相关数据,并且发现豆瓣电影每一页展示25条电影信息,我们可以通过25的倍数去访问相关的页数。

通过观察,进行修改相关的文件

douban_movie.py:

  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from scrapy.http import Request
  4. from douban.items import DoubanItem
  5. class DoubanMovieSpider(scrapy.Spider):
  6. name = 'douban_movie'
  7. allowed_domains = []
  8. def start_requests(self):
  9. for i in range(0,11):
  10. num = i*25
  11. print(num)
  12. url = "https://movie.douban.com/top250?start=%s"% num
  13. yield Request(url, callback=self.parse)
  14. def parse(self, response):
  15. doubans = DoubanItem()
  16. names = response.xpath("//div[@class='pic']/a/img/@alt").extract()
  17. scores = response.xpath("//div[@class='star']/span[@class='rating_num']/text()").extract()
  18. quotes = response.xpath("//p[@class='quote']/span[@class='inq']/text()").extract()
  19. doubans['movie_name'] = names
  20. doubans['movie_score'] = scores
  21. doubans['movie_quote'] = quotes
  22. yield doubans

将获取豆瓣的排行250数据的电影名称和评分和相关简介进行爬取,并保持在douban.txt文件中

items.py 

  1. import scrapy
  2. class DoubanItem(scrapy.Item):
  3. # define the fields for your item here like:
  4. # name = scrapy.Field()
  5. movie_name = scrapy.Field()
  6. movie_score = scrapy.Field()
  7. movie_quote = scrapy.Field()

pipelines.py

  1. class DoubanPipeline(object):
  2. def process_item(self, item, spider):
  3. for i in range(0, len(item['movie_name'])):
  4. with open('douban.txt', 'a', encoding='utf-8') as w:
  5. w.write(item['movie_name'][i] + ' 评分:' + item['movie_score'][i] + ' 介绍:' + item['movie_quote'][i] + '\n')
  6. return item

最后将settings.py的

ROBOTSTXT_OBEY=False,
ITEM_PIPELIES = {
   'douban.pipelines.DoubanPipeline': 300,
}

 通过scrapy crawl douban_movie 进行爬取动作,得到结果

 

 

 

 

 



所属网站分类: 技术文章 > 博客

作者:胡龙茶

链接:https://www.pythonheidong.com/blog/article/48968/65c4f9df2c895e30ba03/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)