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

資訊專欄INFORMATION COLUMN

Python 從零開始爬蟲(三)——實戰:requests+BeautifulSoup實現靜態爬取

Codeing_ls / 1800人閱讀

摘要:前篇全片都是生硬的理論使用,今天就放個靜態爬取的實例讓大家體驗一下的使用,了解一些背后的原理。給出網站打開右鍵檢查第一個電影,分析源碼先,發現每個標簽就對應著一個電影的信息。

前篇全片都是生硬的理論使用,今天就放個靜態爬取的實例讓大家體驗一下BeautifulSoup的使用,了解一些背后的原理。

順便在這引入靜態網頁的概念——靜態網頁是指一次性加載所有內容的網頁,爬蟲一次請求便能得到所有信息,對爬蟲非常友好,適合練手

豆瓣top250電影信息爬取

這是一個老掉牙的經典實例了,但越是經典,越有示范性作用,最重要的一點是,它是靜態的。
給出網站:https://movie.douban.com/top250
打開F12/右鍵檢查第一個電影,分析源碼先,發現每個

  • 標簽就對應著一個電影的信息。

    我們來爬取每部電影的圖片,名稱,導演演員,類型,評分,和它的一句話總結,繼續對

  • 標簽進行分析,又發現信息又在
    標簽里,而這標簽只存在于
  • 標簽中,其它地方不存在,這樣可以用find_all()方法把他們全部分離出來。這里不選擇
  • 標簽是它沒有唯一性,電影以外的內容也有
  • 標簽

    布置好偽裝后就可一開始根據每個

    標簽進行信息篩選了:

    圖片鏈接是

    的上上個兄弟標簽
    的孫子的src屬性的值

    電影名有多個,都在

    標簽里,用get_text()把它們串起來

    導演演員是

    標簽的第一段字符串

    類型是

    標簽的第二段字符串

    評分和評分人數都在

    標簽里,又用get_text()串起來

    一句話總結直屬于標簽

    html中的&NBSP(實際上是小寫,這里大寫避免markdown識別)對應字符串中的xa0,可用replace方法替換掉

    url = "https://movie.douban.com/top250"
    headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}
    r=requests.get(url,headers=headers)
    soup = BeautifulSoup(r.text,"lxml")
    
    for each in soup.find_all("div",class_="info"):
        img_url = each.previous_sibling.previous_sibling.a.img["src"]#圖片鏈接
        
        """with open("*.jpg","wb") as img:#還可以順便下載回來,名字自起
        img.write(requests.get(img_url,headers=headers).content)"""
        
        
        title=each.find("div",class_="hd").get_text(strip=True).replace("xa0","")#標題
        actor = list(each.find("p",class_="").strings)[0].strip().replace("xa0","")#導演演員
        type_ = list(each.find("p",class_="").strings)[1].strip().replace("xa0","")#類型
        score = each.find("div",class_="star").get_text("/",strip=True)#評分及人數
        quote = each.find("span",class_="inq").string#一句話總結
        print([img_url,title,actor,type_,score,quote])#這里只簡單打出來看下,怎樣存儲由你來決定

    ??但是這樣只有25部電影啊,是的,"https://movie.douban.com/top250"指向第一頁,我們現在只爬了一頁,其實還有9頁還沒爬啊,這是就要構造網址了。

    ??我們點到第二頁,發現網址變成了https://movie.douban.com/top2...,第三頁start條件值變成50,我們可以得出結論,每下一頁,start條件值就加25。第一頁start=0,第二頁start=25.....第十頁start=225。這樣就可以循環構造網頁并爬取了,這交給讀者實現
    ??下面筆者提供另一種思路:網頁不是有下一頁的按鈕嗎,右鍵檢查一下,發現它已經包含了要構造的部分了,是一個屬性值,提取出來接到原網址上即得到下一頁的網址,這樣能完全爬取所有頁數,不用像上面一樣設置循環次數。

    貼上完整代碼

    import requests
    from bs4 import BeautifulSoup
    
    
    url = "https://movie.douban.com/top250"
    with open("douban.txt","w",encoding="utf-8") as f:
        while url :
            headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}
    
            r=requests.get(url,headers=headers)
            soup = BeautifulSoup(r.text,"lxml")
    
            for each in soup.find_all("div",class_="info"):
                img_url = each.previous_sibling.previous_sibling.a.img["src"]
                title=each.find("div",class_="hd").get_text(strip=True).replace("xa0","")
                actor = list(each.find("p",class_="").strings)[0].strip().replace("xa0","")
                #將生成器list化后索引,strip()去除兩邊空格再用空字符替換 
                type_ = list(each.find("p",class_="").strings)[1].strip().replace("xa0","")
                score = each.find("div",class_="star").get_text("/",strip=True)
                if each.find("span",class_="inq"):#注意有部電影沒有總結,也就沒有標簽這里用if檢測一下防止None使用string方法報錯
                    quote = each.find("span", class_="inq").string
                else:
                    quote = "沒有總結哦"
                print([img_url,title,actor,type_,score,quote])
    
                try:#到最后一頁時沒有下一頁按鈕,會報TypeError,這時用try語句讓url=None使while循環停止
                    url = "https://movie.douban.com/top250" + soup.find("span",class_="next").a["href"]
                except TypeError:
                    url = None

    本實例的篩選方法已經講的很細致了,幾乎提及了BeautifulSoup的所有方法,希望大家能通過此實例能加深對BeautifulSoup的理解,然后自己手打一些爬蟲出來,小的十幾行多的幾十行都可以,爬貼吧什么的都可以。

    還是那句話“只看不實踐的程序員不是好程序員

    下一篇應該會將正則表達式,更加強大也更加難的信息匹配方法
    下下篇了解一下動態爬取?

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

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

    相關文章

    • Python爬蟲基礎

      摘要:爬蟲架構架構組成管理器管理待爬取的集合和已爬取的集合,傳送待爬取的給網頁下載器。網頁下載器爬取對應的網頁,存儲成字符串,傳送給網頁解析器。從文檔中獲取所有文字內容正則匹配后記爬蟲基礎知識,至此足夠,接下來,在實戰中學習更高級的知識。 前言 Python非常適合用來開發網頁爬蟲,理由如下:1、抓取網頁本身的接口相比與其他靜態編程語言,如java,c#,c++,python抓取網頁文檔的接...

      bang590 評論0 收藏0
    • python爬蟲學習教程,爬取網易云音樂!

      摘要:其次,使用后,還需要針對做特定處理。看到這就可以構想一下爬蟲的爬取邏輯了。 運行環境 我的運行環境如下: 系統版本 Windows10。 Python版本 Python3.5,推薦使用Anaconda 這個科學計算版本,主要是因為它自帶一個包管理工具,可以解決有些包安裝錯誤的問題。去Anaconda官網,選擇Python3.5版本,然后下載安裝。 IDE 我使用的是PyCharm,是專...

      Olivia 評論0 收藏0

    發表評論

    0條評論

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