国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

scrapy入門:豆瓣電影top250爬取

xialong / 1108人閱讀

摘要:本文內容爬取豆瓣電影頁面內容,字段包含排名,片名,導演,一句話描述有的為空,評分,評價人數,上映時間,上映國家,類別抓取數據存儲介紹爬蟲框架教程一入門創建項目創建爬蟲注意,爬蟲名不能和項目名一樣應對反爬策略的配置打開文件,將修改為。

本文內容

爬取豆瓣電影Top250頁面內容,字段包含:
排名,片名,導演,一句話描述 有的為空,評分,評價人數,上映時間,上映國家,類別

抓取數據存儲

scrapy介紹

Scrapy爬蟲框架教程(一)-- Scrapy入門

創建項目
scrapy startproject dbmovie
創建爬蟲
cd dbmoive
scarpy genspider dbmovie_spider movie.douban.com/top250

注意,爬蟲名不能和項目名一樣

應對反爬策略的配置

打開settings.py文件,將ROBOTSTXT_OBEY修改為False。

ROBOTSTXT_OBEY = False

修改User-Agent

DEFAULT_REQUEST_HEADERS = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en",
    "Accept-Encoding" :  "gzip, deflate, br",
    "Cache-Control" :  "max-age=0",
    "Connection" :  "keep-alive",
    "Host" :  "movie.douban.com",
    "Upgrade-Insecure-Requests" :  "1",
    "User-Agent" :  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
}

運行爬蟲
scrapy crawl dbmovie_spider
定義item

根據前面的分析,我們需要抓取一共十個字段的信息,現在在items.py文件中定義item

import scrapy

class DoubanItem(scrapy.Item):
    # 排名
    ranking = scrapy.Field()
    # 篇名 
    title = scrapy.Field()
    # 導演
    director = scrapy.Field()
    # 一句話描述 有的為空
    movie_desc = scrapy.Field()
    # 評分
    rating_num = scrapy.Field()
    # 評價人數
    people_count = scrapy.Field()
    # 上映時間
    online_date = scrapy.Field()
    # 上映國家
    country = scrapy.Field()
    # 類別
    category = scrapy.Field()
字段提取

這里需要用到xpath相關知識,偷了個懶,直接用chrome插件獲取
Chrome瀏覽器獲取XPATH的方法----通過開發者工具獲取

def parse(self, response):
    item = DoubanItem()
    movies = response.xpath("http://div[@class="item"]")
    for movie in movies:
        # 名次
        item["ranking"] = movie.xpath("div[@class="pic"]/em/text()").extract()[0]
        # 片名 提取多個片名
        titles = movie.xpath("div[@class="info"]/div[1]/a/span/text()").extract()[0]
        item["title"] = titles
        # 獲取導演信息
        info_director = movie.xpath("div[2]/div[2]/p[1]/text()[1]").extract()[0].replace("
", "").replace(" ", "").split("xa0")[0]
        item["director"] = info_director
        # 上映日期
        online_date = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace("
", "").replace("xa0", "").split("/")[0].replace(" ", "")
        # 制片國家
        country = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace("
", "").split("/")[1].replace("xa0", "")
        # 影片類型
        category = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace("
", "").split("/")[2].replace("xa0", "").replace(" ", "")
        item["online_date"] = online_date
        item["country"] = country
        item["category"] = category
        movie_desc = movie.xpath("div[@class="info"]/div[@class="bd"]/p[@class="quote"]/span/text()").extract()
        if len(movie_desc) != 0:  # 判斷info的值是否為空,不進行這一步有的電影信息并沒有會報錯或數據不全
            item["movie_desc"] = movie_desc
        else:
            item["movie_desc"] = " "

        item["rating_num"] = movie.xpath("div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()").extract()[0]
        item["people_count"] = movie.xpath("div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[4]/text()").extract()[0]
        yield item
    # 獲取下一頁
    next_url = response.xpath("http://span[@class="next"]/a/@href").extract()
    
    if next_url:
        next_url = "https://movie.douban.com/top250" + next_url[0]
        yield scrapy.Request(next_url, callback=self.parse, dont_filter=True)
存儲數據,mysql

注意1064錯誤,表中字段包含mysql關鍵字導致
Scrapy入門教程之寫入數據庫

import pymysql

def dbHandle():
    conn = pymysql.connect(
        host="localhost",
        user="root",
        passwd="pwd",
        db="dbmovie",
        charset="utf8",
        use_unicode=False
    )
    return conn

class DoubanPipeline(object):
    def process_item(self, item, spider):
        dbObject = dbHandle()
        cursor = dbObject.cursor()
        sql = "insert into db_info(ranking,title,director,movie_desc,rating_num,people_count,online_date,country,category) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)"

        try:
            cursor.execute(sql, (item["ranking"], item["title"], item["director"], item["movie_desc"], item["rating_num"], item["people_count"], item["online_date"], item["country"], item["category"]))
            dbObject.commit()
        except Exception as e:
            print(e)
            dbObject.rollback()

        return item
簡單應對爬蟲策略

Scrapy爬蟲——突破反爬蟲最全策略解析

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44910.html

相關文章

  • scrapy入門教程——爬取豆瓣電影Top250

    摘要:注意爬豆爬一定要加入選項,因為只要解析到網站的有,就會自動進行過濾處理,把處理結果分配到相應的類別,但偏偏豆瓣里面的為空不需要分配,所以一定要關掉這個選項。 本課只針對python3環境下的Scrapy版本(即scrapy1.3+) 選取什么網站來爬取呢? 對于歪果人,上手練scrapy爬蟲的網站一般是官方練手網站 http://quotes.toscrape.com 我們中國人,當然...

    senntyou 評論0 收藏0
  • scrapy爬取豆瓣Top250電影

    摘要:這次我們爬取的內容準備步驟找到格式網頁中需要爬取的數據的例如我們需要爬取圖片的這里用的是不會用的同學請百度然后我們開始建立工程打開然后在你想要建立工程的目錄下面輸入就會自動建立一個工程然后去根目錄建立一個去這個目錄里建立一個注意這里的主爬蟲 這次我們爬取的內容 showImg(https://segmentfault.com/img/bVSirX?w=1021&h=521); 準備步驟...

    codergarden 評論0 收藏0
  • Python爬蟲 - scrapy - 爬取豆瓣電影TOP250

    摘要:前言新接觸爬蟲,經過一段時間的實踐,寫了幾個簡單爬蟲,爬取豆瓣電影的爬蟲例子網上有很多,但都很簡單,大部分只介紹了請求頁面和解析部分,對于新手而言,我希望能夠有一個比較全面的實例。 0.前言 新接觸爬蟲,經過一段時間的實踐,寫了幾個簡單爬蟲,爬取豆瓣電影的爬蟲例子網上有很多,但都很簡單,大部分只介紹了請求頁面和解析部分,對于新手而言,我希望能夠有一個比較全面的實例。所以找了很多實例和文...

    WalkerXu 評論0 收藏0
  • Java爬蟲之下載IMDB中Top250電影的圖片

    摘要:介紹在博客爬蟲爬取豆瓣電影圖片中我們利用的爬蟲框架,將豆瓣電影圖片下載到自己電腦上。那么,在的爬蟲的也可以下載圖片嗎答案當然是肯定的在本次分享中,我們將利用的包和函數來實現圖片的下載。 介紹 ??在博客:Scrapy爬蟲(4)爬取豆瓣電影Top250圖片中我們利用Python的爬蟲框架Scrapy,將豆瓣電影Top250圖片下載到自己電腦上。那么,在Java的爬蟲的也可以下載圖片嗎?答...

    tianren124 評論0 收藏0
  • 零基礎如何學爬蟲技術

    摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<