爬取豆瓣电影TOP 250的电影存储到mongodb中
爬取豆瓣电影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中的更多相关文章
- python定时器爬取豆瓣音乐Top榜歌名
python定时器爬取豆瓣音乐Top榜歌名 作者:vpoet mail:vpoet_sir@163.com 注:这些小demo都是前段时间为了学python写的,现在贴出来纯粹是为了和大家分享一下 # ...
- python3爬取豆瓣排名前250电影信息
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : doubanmovie.py # @Author: Anthony.waa # @Dat ...
- Python爬虫:现学现用xpath爬取豆瓣音乐
爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 这样一比较我我选择了Lxml(xpa ...
- 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名
正则表达式爬取豆瓣电影TOP前250的中英文名 1.首先要实现网页的数据的爬取.新建test.py文件 test.py 1 import requests 2 3 def get_Html_text( ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
- 用python爬取豆瓣电影Top 250
首先,打开豆瓣电影Top 250,然后进行网页分析.找到它的Host和User-agent,并保存下来. 然后,我们通过翻页,查看各页面的url,发现规律: 第一页:https://movie.dou ...
- python爬虫08 | 你的第二个爬虫,要过年了,爬取豆瓣最受欢迎的250部电影慢慢看
马上就要过年啦 过年在家干啥咧 准备好被七大姑八大姨轮番「轰炸」了没? 你的内心 os 是这样的 但实际上你是这样的 应付完之后 闲暇时刻不妨看看电影 接下来咱们就来爬取豆瓣上评分最高的 250部电影 ...
- 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP
爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...
- Python爬取豆瓣电影top
Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ...
随机推荐
- linux+php实现定时任务[链接]
1.crontab 详细用法 定时任务 https://www.cnblogs.com/aminxu/p/5993769.html 2.查看crontab日志 https://www.cnblogs. ...
- MySQL如何启用密码强度审计【转】
1.密码验证插件安装 要使服务器可以使用,插件库文件必须位于MySQL插件目录(plugin_dir系统变量指定的目录)中.如有必要,请设置plugin_dir服务器启动时的值, 以告知服务器插件目录 ...
- js学习笔记--dom部分(一)
js 学习整理之Dom部分 前面我总结了我最近学习js基础部分,当时提到过js分了三大部分,第一部分ECMA基础也就是第一次写的基础部分, 第二部分也就是DOM部分,也就是这里要写的内容的,然后第三部 ...
- VC里判断系统是不是64bit
不过,理论上来说,也可以用一个int的大小作为参考,判断是32位还是64位.sizeof(int) == 4 //32位系统.sizeof(int) == 8 //64位系统. 也可以使用函数如下: ...
- thinkphp验证码不显示
1.安装php的GD库 yum -y install php-gd 2.在输出图片前header("content-type: image/png"); 写入 header(&qu ...
- thinkphp中的内置操作数据库与mysql中的函数汇总
8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...
- python学习第41天
# 索引 # 认识mysql中的key # index key 普通索引,能够加速查询,辅助索引 # unique key 唯一 + 索引,辅助索引 # primary key 唯一 + 非空 + 聚 ...
- Linux命令之top、ulimit、free
1.[ulimit命令] ulimit命令用来限制系统用户对shell资源的访问. 假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时 ...
- layui 各种弹出框
第一步:引用文件 第二步:写脚本 <script> //iframe窗 //layer.open({ // type: 2, // title: false, // closeBtn: 0 ...
- CXF使用
一.服务端: 1.web.xml配置 <servlet> <servlet-name>cxf</servlet-name> <servlet-class> ...