scrapy爬取豆瓣电影top250并存储到mysql
来源:互联网 发布:网络英语培训排名 编辑:程序博客网 时间:2024/05/16 17:29
github链接:https://github.com/GeraltLin/scrapy_mysql
1.定义item,只是作为测试用例,就只记录电影名称和评分吧
import scrapyclass MovieTop250Item(scrapy.Item): # define the fields for your item here like: moviename = scrapy.Field() rating = scrapy.Field() pass
2.定义Spider,爬取豆瓣电影top250,获取数据
import scrapyfrom movie_top250.items import MovieTop250Itemclass movieSpider(scrapy.Spider): name = 'douban_movie' allowed_domain = ['douban.com'] start_urls = ['https://movie.douban.com/top250', ] def parse(self, response): yield scrapy.Request(response.url,callback=self.parse_page)#获取下一页的链接,并回调parse_page for page in response.xpath('//div[@class = "paginator"]/a'): link = response.urljoin(page.xpath('@href').extract()[0]) yield scrapy.Request(link,callback=self.parse_page) def parse_page(self,response): for item in response.xpath('//div[@class = "item"]'): movie = MovieTop250Item() movie['moviename'] = item.xpath('div[2]/div[1]/a/span[1]/text()').extract()[0] movie['rating'] = item.xpath('div[2]/div[2]/div[1]/span[2]/text()').extract()[0] yield movie3.定义pipelines,对获取到的数据进行处理(存储到mysql)
需要先下pymysql与twisted这两个操作数据库的包
import pymysqlfrom twisted.enterprise import adbapiclass MovieTop250Pipeline(object): def __init__(self):#定义链接的数据库的相关信息 self.dbpool = adbapi.ConnectionPool('pymysql', host='127.0.0.1', db='doubanmovie', user='root', passwd='123456', cursorclass=pymysql.cursors.DictCursor, charset='utf8', use_unicode=False) def process_item(self, item, spider): query = self.dbpool.runInteraction(self._conditional_insert, item) # 调用插入的方法 query.addErrback(self._handle_error, item, spider) # 调用异常处理方法 return item def _conditional_insert(self, tx, item): # print item['name'] sql = "insert into movie(moviename,rating) values(%s,%s)" params = (item["moviename"], item["rating"]) #执行sql语句 tx.execute(sql, params) def _handle_error(self, failure, item, spider): print('--------------database operation exception!!-----------------') print('-------------------------------------------------------------') print(failure)4.settings设置
BOT_NAME = 'movie_top250'SPIDER_MODULES = ['movie_top250.spiders']NEWSPIDER_MODULE = 'movie_top250.spiders'from faker import Factoryf = Factory.create()USER_AGENT = f.user_agent()ROBOTSTXT_OBEY = TrueITEM_PIPELINES = { 'movie_top250.pipelines.MovieTop250Pipeline': 300,}
5.结果
运行 scrapy crawl douban_movie
阅读全文
1 0
- scrapy爬取豆瓣电影top250并存储到mysql
- scrapy爬取豆瓣TOP250电影
- scrapy ------ 爬取豆瓣电影TOP250
- scrapy爬取豆瓣top250电影
- Python 采用Scrapy爬虫框架爬取豆瓣电影top250
- 爬虫框架scrapy,爬取豆瓣电影top250
- 使用scrapy+mongodb爬取豆瓣电影TOP250
- Scrapy教程(一)爬取豆瓣top250电影
- 使用scrapy框架爬取豆瓣电影top250信息
- 用scrapy框架爬取豆瓣Top250电影
- 用Scrapy对豆瓣top250进行电影详细信息爬取
- Python爬取豆瓣电影top250
- Python爬取豆瓣电影Top250数据
- python+beautifulsoup爬取豆瓣电影TOP250
- nodejs爬取豆瓣top250电影信息
- Python爬取豆瓣电影top250
- python爬取豆瓣电影Top250
- 使用requests爬取豆瓣电影top250
- 【嵌入式学习历程8】数据结构之链表
- LeetCode 39. Combination Sum && 40. Combination Sum II && 216. Combination Sum III
- mysql5.7官网直译优化和索引--mysql如何使用索引
- 【十六】机器学习之路——决策树算法(2)
- 3666 小C语言--词法分析程序
- scrapy爬取豆瓣电影top250并存储到mysql
- 《电路计算C++与MATLAB》学习笔记(六)
- 触摸屏:屏幕键盘(虚拟键盘)解决方案
- C/C++中static关键字作用
- poj1521
- centos6安装elasticsearch6错误笔记
- ThinkPadT420装双系统
- 2147 表达式语法分析——递归子程序法
- CPP 调用Python