爬取豆瓣电影TOP 250的电影存储到mongodb中

1.创建项目sp1

PS D:\scrapy> scrapy.exe startproject douban

2.创建一个爬虫

PS D:\scrapy\tencent> scrapy genspider doubanmovie "movie.douban.com"

3.编辑爬虫内容doubanmovie.py

# -*- coding: utf-8 -*-
import scrapy
from douban.items import DoubanItem class DoubanmovieSpider(scrapy.Spider):
name = 'doubanmovie'
allowed_domains = ['movie.douban.com']
offset = 0
base_url = "https://movie.douban.com/top250?start="
start_urls = [base_url + str(offset), ] def parse(self, response): movies = response.xpath("//div[@class='info']")
for i in movies:
# 标题
title = i.xpath(".//span[@class='title'][1]/text()").extract()[0].strip()
# 信息
bd = i.xpath(".//div[@class='bd']/p/text()").extract()[0].strip()
# 评分
star = i.xpath(".//div[@class='star']/span[@class='rating_num']/text()").extract()[0].strip()
# 简介
quote = i.xpath(".//p[@class='quote']/span/text()").extract()
if quote:
quote = quote[0].strip() yield DoubanItem(title=title, bd=bd, star=star, quote=quote) # 当url页面小与 225 时让URL继续翻页
if self.offset < 225:
self.offset += 25
yield scrapy.Request(self.base_url + str(self.offset), callback=self.parse)

4 .设置items.py 的内容接收格式

import scrapy

class DoubanItem(scrapy.Item):
# 标题
title = scrapy.Field()
# 信息
bd = scrapy.Field()
# 评分
star = scrapy.Field()
# 简介
quote = scrapy.Field()

5 .settings.py 中设置将格式化后的数据传给 pipelines 处理保存

# 下载后的文件如何处理
ITEM_PIPELINES = {
'douban.pipelines.DoubanPipeline': 300,
} # 头部信息
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
# 没有 User-Agent 会报 403 错误
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
} # MONGODB 主机配置
MONGODB_HOST = "192.8.11.100"
MONGODB_PORT = 27017
MONGODB_DBNAME = "Douban"
MONGODB_SHEETNAME = "douban_top_250"

6 .pipelines.py设置保存数据到Mongodb数据库中

import pymongo
from scrapy.conf import settings class DoubanPipeline(object):
def __init__(self):
# 获取settings 中 mongo 的配置信息
host = settings["MONGODB_HOST"]
port = settings["MONGODB_PORT"]
dbname = settings["MONGODB_DBNAME"]
sheeiname = settings["MONGODB_SHEETNAME"] # 创建MongoDB数据库连接
client = pymongo.MongoClient(host=host, port=port,) # 连接密码(待测试)
# client.authenticate("用户", "密码") # 指定数据库
mydb = client[dbname]
# 存放数据的数据库表名
self.sheet = mydb[sheeiname] def process_item(self, item, spider):
data = dict(item)
self.sheet.insert(data) return item

7 .运行爬虫程序

PS D:\scrapy\douban> scrapy crawl doubanmovie

8. 检查日志信息

爬取豆瓣电影TOP 250的电影存储到mongodb中的更多相关文章

  1. python定时器爬取豆瓣音乐Top榜歌名

    python定时器爬取豆瓣音乐Top榜歌名 作者:vpoet mail:vpoet_sir@163.com 注:这些小demo都是前段时间为了学python写的,现在贴出来纯粹是为了和大家分享一下 # ...

  2. python3爬取豆瓣排名前250电影信息

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @File : doubanmovie.py # @Author: Anthony.waa # @Dat ...

  3. Python爬虫:现学现用xpath爬取豆瓣音乐

    爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 这样一比较我我选择了Lxml(xpa ...

  4. 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名

    正则表达式爬取豆瓣电影TOP前250的中英文名 1.首先要实现网页的数据的爬取.新建test.py文件 test.py 1 import requests 2 3 def get_Html_text( ...

  5. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  6. 用python爬取豆瓣电影Top 250

    首先,打开豆瓣电影Top 250,然后进行网页分析.找到它的Host和User-agent,并保存下来. 然后,我们通过翻页,查看各页面的url,发现规律: 第一页:https://movie.dou ...

  7. python爬虫08 | 你的第二个爬虫,要过年了,爬取豆瓣最受欢迎的250部电影慢慢看

    马上就要过年啦 过年在家干啥咧 准备好被七大姑八大姨轮番「轰炸」了没? 你的内心 os 是这样的 但实际上你是这样的 应付完之后 闲暇时刻不妨看看电影 接下来咱们就来爬取豆瓣上评分最高的 250部电影 ...

  8. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

  9. Python爬取豆瓣电影top

    Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称  评分 ...

随机推荐

  1. Windows中Anaconda,Tensorflow 和 Pycharm的安装和配置

    Anaconda完全入门指南 https://www.jianshu.com/p/eaee1fadc1e9                 [安装不要按此条链接进行] Windows中 Anacond ...

  2. Java基础5-接口

    昨日内容回顾 jvm参数设置 -Xmx //设置最大堆大小 java -Xmx512m Classname -Xms //设置初始堆大小 java -Xms24m Classname -Xss //设 ...

  3. shiro登录验证原理

    这段时间有点忙,没咋写博客,今天打开staruml看到以前画的一张shiro原理图,先在这发一下,空了再好好进行分析.

  4. requests库入门14-Cookie

    因为http是没有状态的协议,上一个请求和下一个请求是没有关联.但是现实中又需要有关联,比如一个页面某个操作需要登陆之后才能进行,没有登陆就提示你登陆.为了实现这样的效果,所以出现了Cookie和Se ...

  5. PHP操作redis详细讲解(转)

    PHP中redis的使用   redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和z ...

  6. JS的Ajax和同源策略

    JS实现的ajax AJAX核心(XMLHttpRequest) 其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象.所有的异步交互都是使用XMLHttpSer ...

  7. a.py

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os import sys import re import shutil import glob d ...

  8. Mac 系统重新安装的几种方法

    转:https://blog.csdn.net/feibozhulang/article/details/43734109 苹果官网说明: https://support.apple.com/en-u ...

  9. codecs and formats of digital media

    A codec is a device or software that is used to compress or decompress a digital media file, such as ...

  10. 定制起始url(scrapy_redis)

    爬虫:(在这里不用配置start_url,直接可以取redis里面取start_url,可以多个) from scrapy_redis.spiders import RedisSpider # cla ...