目的网址https://movie.douban.com/top250
最后保存的内容:csv文件、json文件、存入mysql、下载海报图片
要点:1.middlewares.py 设定UA
2.Pipelines.py 保存为json文件 注意json.dumps()的用法
保存为csv文件,注意csv文件的写法,newline等等,还有os.path.getsize得出文件的大小
插入数据到mysql库,利用lazystore,还得先在begin创建table
下载图片,修改图片的路径名字!!PS:这个只能放在最后执行,因为改名后item会变乱!
3.settings.py 设定重试、间隔时间、带cookies登录、设定UA、设定Pipe的执行顺序、图片下载设定
4.begin.py 利用lazystore,创建table,,启动spider,直接保存csv文件的方法
主体spider.py(其实内容很简单!)
import scrapy from doubanmovie.items import DoubanmovieItem from scrapy.selector import Selector class XianxiSpider(scrapy.Spider): name = "doubanmovie" #begin 好像用的就是这个名字 allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] # 我们爬取35页的全部热门段子 def parse(self, response): sel=Selector(response) movies = response.xpath('//div[@class="item"]') item = DoubanmovieItem() for movie in movies: title=movie.xpath('.//div[@class="hd"]/a').xpath('string(.)').extract() name="".join(title).strip() item['name']=name.replace('\r\n', '').replace(' ', '').replace('\n', '') infos = movie.xpath('.//div[@class="bd"]/p').xpath('string(.)').extract() info="".join(infos).strip() item['info'] = info.replace('\r\n', '').replace(' ', '').replace('\n', '') item['rating'] = movie.xpath('.//span[@class="rating_num"]/text()').extract()[0].strip() item['num'] = movie.xpath('.//div[@class="star"]/span[last()]/text()').extract()[0].strip()[:-3] quotes = movie.xpath('.//span[@class="inq"]/text()').extract() quote