成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

scrapy入門(mén):豆瓣電影top250爬取

xialong / 1114人閱讀

摘要:本文內(nèi)容爬取豆瓣電影頁(yè)面內(nèi)容,字段包含排名,片名,導(dǎo)演,一句話描述有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別抓取數(shù)據(jù)存儲(chǔ)介紹爬蟲(chóng)框架教程一入門(mén)創(chuàng)建項(xiàng)目創(chuàng)建爬蟲(chóng)注意,爬蟲(chóng)名不能和項(xiàng)目名一樣應(yīng)對(duì)反爬策略的配置打開(kāi)文件,將修改為。

本文內(nèi)容

爬取豆瓣電影Top250頁(yè)面內(nèi)容,字段包含:
排名,片名,導(dǎo)演,一句話描述 有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別

抓取數(shù)據(jù)存儲(chǔ)

scrapy介紹

Scrapy爬蟲(chóng)框架教程(一)-- Scrapy入門(mén)

創(chuàng)建項(xiàng)目
scrapy startproject dbmovie
創(chuàng)建爬蟲(chóng)
cd dbmoive
scarpy genspider dbmovie_spider movie.douban.com/top250

注意,爬蟲(chóng)名不能和項(xiàng)目名一樣

應(yīng)對(duì)反爬策略的配置

打開(kāi)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",
}

運(yùn)行爬蟲(chóng)
scrapy crawl dbmovie_spider
定義item

根據(jù)前面的分析,我們需要抓取一共十個(gè)字段的信息,現(xiàn)在在items.py文件中定義item

import scrapy

class DoubanItem(scrapy.Item):
    # 排名
    ranking = scrapy.Field()
    # 篇名 
    title = scrapy.Field()
    # 導(dǎo)演
    director = scrapy.Field()
    # 一句話描述 有的為空
    movie_desc = scrapy.Field()
    # 評(píng)分
    rating_num = scrapy.Field()
    # 評(píng)價(jià)人數(shù)
    people_count = scrapy.Field()
    # 上映時(shí)間
    online_date = scrapy.Field()
    # 上映國(guó)家
    country = scrapy.Field()
    # 類(lèi)別
    category = scrapy.Field()
字段提取

這里需要用到xpath相關(guān)知識(shí),偷了個(gè)懶,直接用chrome插件獲取
Chrome瀏覽器獲取XPATH的方法----通過(guò)開(kāi)發(fā)者工具獲取

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]
        # 片名 提取多個(gè)片名
        titles = movie.xpath("div[@class="info"]/div[1]/a/span/text()").extract()[0]
        item["title"] = titles
        # 獲取導(dǎo)演信息
        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(" ", "")
        # 制片國(guó)家
        country = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace("
", "").split("/")[1].replace("xa0", "")
        # 影片類(lèi)型
        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的值是否為空,不進(jìn)行這一步有的電影信息并沒(méi)有會(huì)報(bào)錯(cuò)或數(shù)據(jù)不全
            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
    # 獲取下一頁(yè)
    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)
存儲(chǔ)數(shù)據(jù),mysql

注意1064錯(cuò)誤,表中字段包含mysql關(guān)鍵字導(dǎo)致
Scrapy入門(mén)教程之寫(xiě)入數(shù)據(jù)庫(kù)

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
簡(jiǎn)單應(yīng)對(duì)爬蟲(chóng)策略

Scrapy爬蟲(chóng)——突破反爬蟲(chóng)最全策略解析

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44910.html

相關(guān)文章

  • scrapy入門(mén)教程——爬取豆瓣電影Top250!

    摘要:注意爬豆爬一定要加入選項(xiàng),因?yàn)橹灰馕龅骄W(wǎng)站的有,就會(huì)自動(dòng)進(jìn)行過(guò)濾處理,把處理結(jié)果分配到相應(yīng)的類(lèi)別,但偏偏豆瓣里面的為空不需要分配,所以一定要關(guān)掉這個(gè)選項(xiàng)。 本課只針對(duì)python3環(huán)境下的Scrapy版本(即scrapy1.3+) 選取什么網(wǎng)站來(lái)爬取呢? 對(duì)于歪果人,上手練scrapy爬蟲(chóng)的網(wǎng)站一般是官方練手網(wǎng)站 http://quotes.toscrape.com 我們中國(guó)人,當(dāng)然...

    senntyou 評(píng)論0 收藏0
  • scrapy爬取豆瓣Top250電影

    摘要:這次我們爬取的內(nèi)容準(zhǔn)備步驟找到格式網(wǎng)頁(yè)中需要爬取的數(shù)據(jù)的例如我們需要爬取圖片的這里用的是不會(huì)用的同學(xué)請(qǐng)百度然后我們開(kāi)始建立工程打開(kāi)然后在你想要建立工程的目錄下面輸入就會(huì)自動(dòng)建立一個(gè)工程然后去根目錄建立一個(gè)去這個(gè)目錄里建立一個(gè)注意這里的主爬蟲(chóng) 這次我們爬取的內(nèi)容 showImg(https://segmentfault.com/img/bVSirX?w=1021&h=521); 準(zhǔn)備步驟...

    codergarden 評(píng)論0 收藏0
  • Python爬蟲(chóng) - scrapy - 爬取豆瓣電影TOP250

    摘要:前言新接觸爬蟲(chóng),經(jīng)過(guò)一段時(shí)間的實(shí)踐,寫(xiě)了幾個(gè)簡(jiǎn)單爬蟲(chóng),爬取豆瓣電影的爬蟲(chóng)例子網(wǎng)上有很多,但都很簡(jiǎn)單,大部分只介紹了請(qǐng)求頁(yè)面和解析部分,對(duì)于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。 0.前言 新接觸爬蟲(chóng),經(jīng)過(guò)一段時(shí)間的實(shí)踐,寫(xiě)了幾個(gè)簡(jiǎn)單爬蟲(chóng),爬取豆瓣電影的爬蟲(chóng)例子網(wǎng)上有很多,但都很簡(jiǎn)單,大部分只介紹了請(qǐng)求頁(yè)面和解析部分,對(duì)于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。所以找了很多實(shí)例和文...

    WalkerXu 評(píng)論0 收藏0
  • Java爬蟲(chóng)之下載IMDB中Top250電影的圖片

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

    tianren124 評(píng)論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)

    摘要:楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類(lèi)信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...

    KunMinX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<