1. 程式人生 > >用Python Scrapy爬取某電影網站並存儲入mysql

用Python Scrapy爬取某電影網站並存儲入mysql

爬取目標:javlib,使用框架Scrapy

首先使用在命令列裡

scrapy startproject projectname
scrapy genspider spidername
指令建立爬蟲。

首先定義items.py

import scrapy


class AvmoItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    pic = scrapy.Field()
    url = scrapy.Field()
    id_ = scrapy.Field()

這是spiders資料夾中的爬蟲檔案

spidername.py

# -*- coding: utf-8 -*-
import scrapy
import os
import sys
import re
import urllib.parse
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
import items


class JavbusSpider(scrapy.Spider):
    name = 'javlibrary'
    allowed_domains = ['www.ja14b.com']
    start_urls = ['http://www.ja14b.com/cn/vl_genre.php?g=cu']

    # 爬取目錄頁
    def parse(self, response):
        # 通過xpath指令找到需要爬取的每部電影的url。
        for av in response.xpath("//div[@class=\"video\"]"):
            url = urllib.parse.urljoin('http://www.ja14b.com/cn/', av.xpath("a/@href").extract()[0])
            # 將每部電影的URL傳送到parse_movie中進行下一步處理。
            yield scrapy.Request(url, callback=self.parse_movie)
        # 檢查是否有下一頁,如果有下一頁,通過parse遞迴爬取下一頁的內容
        next_page = response.xpath("//*[@class=\"page next\"]")
        if next_page:
            next_page_url = "http://www.ja14b.com" + response.xpath("//*[@id=\"rightcolumn\"]/div[3]/a[9]/@href").extract()[0]
            yield scrapy.Request(next_page_url, callback=self.parse)

    # 對每一部電影進行分析
    def parse_movie(self, response):
        title = response.xpath("//*[@id=\"video_title\"]/h3/a/text()").extract()[0]
        # 定義新的ITEM
        item = items.AvmoItem()
        # 通過regex獲取番號。
        id_ = re.search("[a-zA-Z]{2,5}-?\d{2,5}", title).group(0)
        name = title[len(id_)+1:]
        pic = "http:" + response.xpath("//*[@id=\"video_jacket_img\"]/@src").extract()[0]
        # 將每部電影的屬性新增到item中。
        item["url"] = response.url
        item["id_"] = id_
        item["name"] = name
        item["pic"] = pic
        yield item

然後修改pipelines.py

# 通過pymysql連線電腦上的MySQL
import pymysql


class AvmoPipeline(object):
    def __init__(self):
        # 連線database
        self.db = pymysql.connect("localhost", "root", "6966xx511", "testDB", charset='utf8mb4', )
        # 通過cursor傳達sql指令
        self.cursor = self.db.cursor()
        # 如果table存在,則drop,防止引發衝突。
        self.cursor.execute("DROP TABLE IF EXISTS AV")
        # 建立table av,以番號(id)為primary key,防止重複。
        sql = """CREATE TABLE AV (
                         id  VARCHAR(255) NOT NULL,
                         name  VARCHAR(255),
                         pic  VARCHAR(255),
                         url VARCHAR(255),
                         magnet VARCHAR(255),
                         PRIMARY KEY (id)
                         );"""
        self.cursor.execute(sql)
        self.db.commit()

    def process_item(self, item, spider):
        # 每次收到一個item即將其加入table
        self.cursor.execute("ALTER TABLE AV CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;")
        sql = """INSERT INTO AV(id,name,pic,url)
                VALUES ('{}','{}','{}','{}');""".format(item['id_'], item['name'], item['pic'], item['url'])
        self.cursor.execute(sql)
        self.db.commit()
        return item

    def close_spider(self, spider):
        self.db.close()


這樣,一個包含小電影的爬蟲就成功了,注意如果Scrapy一直顯示403error則需要手動修改settings.py,使ROBOTSTXT_OBEY = False。

相關推薦

Python Scrapy電影網站並存mysql

爬取目標:javlib,使用框架Scrapy 首先使用在命令列裡scrapy startproject projectname和scrapy genspider spidername指令建立爬蟲。 首先定義items.pyimport scrapy class Av

Python爬蟲豆瓣電影、讀書Top250並排序

更新:已更新豆瓣電影Top250的指令碼及網站 概述 經常用豆瓣讀書的童鞋應該知道,豆瓣Top250用的是綜合排序,除使用者評分之外還考慮了很多比如是否暢銷、點選量等等,這也就導致了一些近年來評分不高的暢銷書在這個排行榜上高高在上遠比一些經典名著排名還高,於是在這裡打算重新給To

python 3 小說網站小說,註釋詳細

每一行都有註釋,不多解釋了 import requests from bs4 import BeautifulSoup import os if __name__ == '__main__': # 要下載的網頁 url = 'https://www.b

java電影網站資料

使用jsoup獲取動態網站的資料 部分程式碼: /** * 獲取分類的所有相對連結地址 和名稱,儲存到map中,返回資料 * */ public class GetMoviesName { private String url; H

Python3.7爬蟲 大量小說網站小說並寫入mysql(持續完善中...) 未解決問題:mysql長時間新增超過百萬條數據表鎖甚至崩潰

oot req val page src sele 爬蟲 use uwa 練手之作 代碼中還有很多問題 持續完善中 渣渣阿裏T5 99包郵服務器只開了6個進程 #encoding:utf-8 import requests # 請求 from lxml import

實習僧網站並存

# -*- coding:utf-8 -*- import requests,re,time,xlwt headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (

python視訊網站彈幕

    文章以bilibili的《變態王子與不笑貓》(這是一部正常的日漫,請放心觀看)為例,爬取該番劇下所有視訊的彈幕。困難的地方主要在尋找視訊的cid上,確實花了點時間,最好找到了也有點恍然大悟,再就是請求彈幕的連結地址,也需要去所有請求裡找,耐心很重要。最後,採用多執行緒

python+rabbitMQ抓婚戀網站戶數據

arm art header 留言 ima 數據轉換 公司 頁面 進行 “總是向你索取卻不曾說謝謝你~~~~”,在博客園和知乎上面吸收了很多知識,以後也會在這裏成長,這裏挺好,謝謝博客園和知乎,所以今天也把自己在項目期間做的東西分享一下,希望對朋友們有所幫助。。。。 廢

python scrapy皇冠體育源碼下載網站數據二(scrapy使用詳細介紹)

時間 源碼 保存文件 i+1 zh-cn china flat url def 1、scrapy工程創建皇冠體育源碼下載論壇:haozbbs.com Q1446595067 在命令行輸入如下命令,創建一個使用scrapy框架的工程 scrapy startproject s

python爬蟲,Scrapy豆瓣電影《芳華》電影短評,分詞生成詞雲圖。

專案github地址:https://github.com/kocor01/scrapy_cloud Python版本為3.6 自己寫的簡單架構《python爬蟲,爬取豆瓣電影《芳華》電影短評,分詞生成詞雲圖。》 這個是用Scrapy框架重新實現的 爬蟲

python 爬蟲網站的漫畫

文章目錄 宣告 前言 思路 流程 程式 結果 宣告 為了表示對網站的尊重,已將網站地址隱藏,下載的漫畫之前我就看過了,所以也會刪掉,絕不侵犯網站的利益。 前言

生產者消費者模型金融網站資料!Python無所不

那麼這個模型和爬蟲有什麼關係呢?其實,爬蟲可以認為是一個生產者,它不斷從網站爬取資料,爬取到的資料就是食物;而所得資料需要消費者進行資料清洗,把有用的資料吸收掉,把無用的資料丟棄。以上便是對生產者消費者模型的簡單介紹了,下面針對本次爬取任務予以詳細說明。分析站點http://www.cfachina.org/

python scrapy全部豆瓣電影(可能是54萬資料)

(一)爬取環境 win10 python3 scrapy (二)豆瓣電影參考標準 主要參考來自神箭手的雲市場 (三)爬取步驟 主要爬取的欄位有:標題,得分,

python爬蟲——requests抓電影網站top100

今天閒的沒事,學習了一下爬蟲方面的知識,然後用requests庫實現了抓取貓眼網站top100電影,還是挺有意思的。 最近用到python比較多,也算是加強了python的運用吧 :-) imp

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

scrapy西刺網站ip

close mon ins css pro bject esp res first # scrapy爬取西刺網站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem clas

Python爬蟲廣州大學教務系統的成績(內網訪問)

enc 用途 css選擇器 狀態 csv文件 表格 area 加密 重要 用Python爬蟲爬取廣州大學教務系統的成績(內網訪問) 在進行爬取前,首先要了解: 1、什麽是CSS選擇器? 每一條css樣式定義由兩部分組成,形式如下: [code] 選擇器{樣式} [/code

Scrapy豆瓣電影top250的電影數據、海報,MySQL

p地址 rom gin ani char 代碼 pipeline print 關閉數據庫 從GitHub得到完整項目(https://github.com/daleyzou/douban.git)1、成果展示數據庫本地海報圖片2、環境(1)已安裝Scrapy的Pycharm

批量圖片網站的圖片

批量爬取某圖片網站的圖片 宣告:僅用於爬蟲學習,禁止用於商業用途謀取利益 1、網頁解析 (1)開啟veer首頁,F12(谷歌瀏覽器),輸入關鍵字,點選搜尋,點選檢視如圖畫圈位置 (2)檢視search中的Headers,找到請求的URL和請求的paylo

Scrapy貓眼電影評論

Scrapy爬取貓眼電影評論 文章目錄 Scrapy爬取貓眼電影評論 1、尋找評論介面 2、分析介面URL 介面URL規律 構造URL介面 分析JSON引數 3、Scrapy程式碼