1. 程式人生 > >pyspider 爬豆瓣電影資訊

pyspider 爬豆瓣電影資訊

#!/usr/bin/env python 
# -*- encoding: utf-8 -*- 
# Created on 2015-11-23 10:50:38 
# Project: doubanmovie 
from pyspider.libs.base_handler import * 
import pymongo,sys 
from pymongo import MongoClient 
import re,time,random,hashlib 
from scrapy.selector import Selector 
from datetime import * 
class Handler(BaseHandler): 

    client = MongoClient(host="localhost",port=27017, read_preference=pymongo.read_preferences.ReadPreference.PRIMARY_PREFERRED) 
    db = client.edogdata 
    db.authenticate("database","passwd") 

倫理片
http://www.dotdy
.com/

    @every(minutes=24*60) 
    def on_start(self): 
        self.crawl('http://movie.douban.com/tag/', callback=self.index_page)  #豆瓣電影標籤 

    @config(age=10 * 24 * 60 * 60) 
    def index_page(self, response): 
        for each in response.doc('a[href^="http"]').items(): 
            if re.match("http://www.douban.com/tag/\w+", each.attr.href, re.U):   #  愛情,戲劇,劉德華,1990,驚悚,恐怖 。。。 
                self.crawl(each.attr.href, callback=self.list_page) 
                
    @config(age=2, priority=2) 
    def list_page(self, response): 
        #print "urlllll response",response.doc 
        movie =  response.doc('a[href^="http"]').items() 
        for each in movie: 
            if re.match("http://www.douban.com/link2/\W+",each.attr.href): 
                #print "each",each.text() 
                #print "each.attr.href",each.attr.href 
                if each.attr.href.find("movie") < 130: 
                    self.crawl(each.attr.href, callback=self.final_page) 
                    print "find movie" 

    def final_page(self,response): 
        for each in response.doc('a[href^="http"]').items(): 
            if re.match('http://movie.douban.com/\w+',each.attr.href,re.U): 
                self.crawl(each.attr.href,callback=self.detail_page) 
            #翻頁 
        self.crawl([x.attr.href for x in response.doc('.next a').items()],callback=self.final_page) # .next 的 '.' 表示class=next  ,如果是 #next 的話,則表示 id=next ××××××××××××××××××××××××××××××××××××××××××××××××××× 
    #@config(priority=4) 
    def detail_page(self, response): 
        now = str(datetime.now()) 
        _id = hashlib.md5(response.doc('HTML>BODY>DIV#wrapper>DIV#content>H1>SPAN').text().encode('utf-8')).hexdigest() 
        site = response.url 
        name = response.doc("title").text().split('(')[0]#response.doc('HTML>BODY>DIV#wrapper>DIV#content>H1>SPAN[property="v:itemreviewed"]').text() 
        director = [x.text() for x in response.doc('a[rel="v:directedBy"]').items()] 
        release_date = [x.text() for x in response.doc('span[property="v:initialReleaseDate"]').items()] 
        actor = '/'.join([x.text() for x in response.doc('a[rel="v:starring"]').items()]) 
        rating = [x.text() for x in response.doc('strong[property="v:average"]').items()] 
        type = [x.text() for x in response.doc('span[property="v:genre"]').items()] 
        source = '豆瓣' 
        #IMDb_Link =  [x.attr.href for x in response.doc('a[rel="nofollow"]').items()]   
        IMDb_Link =  response.doc('HTML>BODY>DIV#wrapper>DIV#content>DIV.grid-16-8.clearfix>DIV.article>DIV.indent.clearfix>DIV.subjectwrap.clearfix>DIV.subject.clearfix>DIV#info>a[rel="nofollow"]').attr.href # HTML>BODY 可以不用 
        self.db.douban.insert({"_id":_id,"url":site , "title":name,"time":now,"director":director,"release_date": release_date,'actor':actor,"type": type,"source": source,"rating":rating,"IMDb_Link":IMDb_Link}) 
        return { 
            "url": response.url, 
            "title": name,#response.doc('HTML>BODY>DIV#wrapper>DIV#content>H1>SPAN[property="v:itemreviewed"]').text(),#property="v:itemreviewed
            "rating": rating,#response.doc('HTML>BODY>DIV#wrapper>DIV#content>DIV.grid-16-8.clearfix>DIV.article>DIV.indent.clearfix>DIV.subjectwrap.clearfix>DIV#interest_sectl>DIV.rating_wrap.clearbox>DIV.rating_self.clearfix>STRONG.ll.rating_num').text(),
            "導演": actor,#[x.text() for x in response.doc('a[rel="v:directedBy"]').items()], 
            "time": now, 
            "release_date" : release_date, 
            "actor" : actor, 
            "type" : type, 
            "IMDb_Link" : IMDb_Link 
影音先鋒電影
http://www.iskdy
.com/

相關推薦

pyspider 豆瓣電影資訊

#!/usr/bin/env python  # -*- encoding: utf-8 -*-  # Created on 2015-11-23 10:50:38  # Project: doubanmovie  from pyspider.libs.base_handler import *  impo

案例學python——案例三:豆瓣電影資訊入庫 一起學爬蟲——通過豆瓣電影top250學習requests庫的使用

  閒扯皮 昨晚給高中的妹妹微信講題,函式題,小姑娘都十二點了還迷迷糊糊。今天凌晨三點多,被連續的警報聲給驚醒了,以為上海拉了防空警報,難不成地震,空襲?難道是樓下那個車主車子被堵了,長按喇叭?開窗看看,好像都不是。好鬼畜的警報聲,家裡也沒裝報警器啊,莫不成家裡煤氣漏了?起床循聲而查,報警

python 爬蟲學習三(Scrapy 實戰,豆瓣電影資訊

利用Scrapy爬取豆瓣電影資訊主要列出Scrapy的三部分程式碼: spider.py檔案: # _*_ coding=utf-8 _*_ import scrapy from course.douban_items import DouBanItem from scra

豆瓣電影資訊取並儲存到excel

import re import openpyxl import requests from bs4 import BeautifulSoup class Movie(object): def __init__(self, title, h

python豆瓣電影資訊

''' 用到的主要知識:(詳情見官方文件) 1. requests 2. BeautifulSoup 3. codecs 4. os ''' #-*-coding:utf-8 import requests from bs4 import Beautif

Python爬蟲入門 | 2 豆瓣電影資訊

這是一個適用於小白的Python爬蟲免費教學課程,只有7節,讓零基礎的你初步瞭解爬蟲,跟著課程內容能自己爬取資源。看著文章,開啟電腦動手實踐,平均45分鐘就能學完一節,如果你願意,今天內你就可以邁入爬蟲的大門啦~ 好啦,正式開始我們的第二節課《爬取豆瓣電影資訊

小菜鳥的第一個爬蟲:豆瓣電影資訊

#!/usr/bin/env python # -*- coding=utf-8 -*- import urllib.request import re import time import os from bs4 import BeautifulSo

豆瓣電影

user alt fire https agent tps gecko get text import urllib.request from bs4 import BeautifulSoup url = "https://movie.douban.com/chart"

python爬蟲之獲取豆瓣電影資訊

此次是師哥給佈置的任務,所以這幾天就在研究如何完成獲取https://movie.douban.com/top250這個網站裡面250部電影的資訊。 主要就是應用了python的urllib2與beautifulsoup的結合使用,也是我第一次使用爬蟲,當然現在看也是基礎的

python爬蟲 登陸豆瓣 豆瓣電影短評

       這個爬蟲的目的是爬取豆瓣電影短評和評分(從1星到5星),這些東西可以做情感分類。由於不登入的情況下只能看電影短評的前幾頁,所以要實現登陸豆瓣。       登陸豆瓣的部分是在網上看的別人的程式碼,忘了從哪看的了。# -*- coding: utf-8 -*- f

使用BeautifulSoup方法抓取豆瓣電影資訊

# -*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import chardet import re import xlwt #獲取某頁的內容 def getHtml(ind

python豆瓣電影Top250的資訊

python爬取豆瓣電影Top250的資訊 2018年07月25日 20:03:14 呢喃無音 閱讀數:50 python爬取豆瓣電影Top250的資訊。 初學,所以程式碼的不夠美觀和精煉。 如果程式碼有錯,請各位讀者在評論區評論,以免誤導其他同學。 (

python爬蟲——豆瓣電影top250資訊並載入到MongoDB資料庫中

最近在學習關於爬蟲方面的知識,因為剛開始接觸,還是萌新,所以有什麼錯誤的地方,歡迎大家指出 from multiprocessing import Pool from urllib.request import Request, urlopen import re, pymongo index

【Python爬蟲】Scrapy框架運用1—豆瓣電影top250的電影資訊(1)

一、Step step1: 建立工程專案 1.1建立Scrapy工程專案 E:\>scrapy startproject 工程專案 1.2使用Dos指令檢視工程資料夾結構 E:\>tree /f step2: 建立spid

豆瓣電影排行(T250)的資訊

1.分析 針對所爬去的Url進行分析: 分析網址'?'符號後的引數,第一個引數'start=0',這個代表頁數,‘=0’時代表第一頁,‘=25’代表第二頁,以此類推。 1.1頁面分析 明確要爬取的元素 :排名、名字、導演、評語、評分 1.2 頁面程式碼分析

python取資料(豆瓣上TOP250的電影資訊)初學者必看!!!

python爬取豆瓣上TOP250電影 初學python爬蟲。我這裡用的 lxml提取xpath的方式來爬取資料 lxml爬取的速度會比bs4快,所以這裡我選用的lxml 話不多上,趕緊上教程。 爬取的思路: 1.獲取網頁解析(有些網頁需要代理) 2.解析完成之

Python網路爬蟲:利用正則表示式豆瓣電影top250排行前10頁電影資訊

在學習了幾個常用的爬取包方法後,轉入爬取實戰。 爬取豆瓣電影早已是練習爬取的常用方式了,網上各種程式碼也已經很多了,我可能現在還在做這個都太土了,不過沒事,畢竟我也才剛入門…… 這次我還是利用正則表示式進行爬取,怎麼說呢,有人說寫正則表示式很麻煩,很多人都不

2-6-1 應用案例:豆瓣 TOP250 電影資訊並存儲(版本:py3)——學習筆記

爬取電影名稱、連結並寫入檔案 import urllib.request as urlrequest from bs4 import BeautifulSoup import time #休息時間 import random #為了時間隨機 top250_url="htt

基於BeautifulSoup豆瓣網上的電影資訊

基於BeautifulSoup實現爬取豆瓣網上的電影資訊 這些天在學習Python,瞭解到用Python做網頁網頁爬蟲非常的方便,於是琢磨著寫了一個簡單的爬蟲程式(感謝萬能的beautifulSoup框架,ps:做網頁解析太方便了)。當然這是計劃中的一部分,說

scrapy豆瓣電影top250

imp port 爬取 all lba item text request top 1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣電影top250 3 4 import scrapy 5 from douban.items i