最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕松掌握Python爬蟲,從入門到精通

 更新時(shí)間:2024年03月27日 14:38:22   作者:COMEGy  
Python爬蟲學(xué)習(xí)完整版來了!想成為一名爬蟲高手,掌握數(shù)據(jù)采集的技能嗎?這份指南將帶你從零開始,一步步掌握Python爬蟲的各種技巧,讓你輕松獲取海量數(shù)據(jù),需要的朋友可以參考下

一、什么是爬蟲

網(wǎng)絡(luò)爬蟲,是一種按照一定規(guī)則,自動抓取互聯(lián)網(wǎng)信息的程序或者腳本。由于互聯(lián)網(wǎng)數(shù)據(jù)的多樣性和資源的有限性,根據(jù)用戶需求定向抓取相關(guān)網(wǎng)頁并分析也成為如今主流的爬取策略。

1 爬蟲可以做什么

你可以爬取網(wǎng)絡(luò)上的的圖片,爬取自己想看的視頻等等,只要你能通過瀏覽器訪問的數(shù)據(jù)都可以通過爬蟲獲取。

2 爬蟲的本質(zhì)是什么

模擬瀏覽器打開網(wǎng)頁,獲取網(wǎng)頁中我們想要的那部分?jǐn)?shù)據(jù)

學(xué)習(xí)案例:爬取豆瓣電影 Top 250的基本信息

引入第三方模塊

# 引入第三方模塊
from bs4 import BeautifulSoup #網(wǎng)頁解析,獲取數(shù)據(jù)
import re    #正則表達(dá)式,進(jìn)行文字匹配
import urllib.request,urllib.error   #制定URL,獲取網(wǎng)頁數(shù)據(jù)
import xlwt    #進(jìn)行Excel操作
import sqlite3   #進(jìn)行數(shù)據(jù)庫操作

正則表達(dá)式——制定獲取數(shù)據(jù)規(guī)則

# 影片詳情鏈接規(guī)則
findLink=re.compile(r'<a href="(.*?)">')   #創(chuàng)建正則表達(dá)式對象,表示規(guī)則(字符串模式)
findImg=re.compile(r'<img.*src="(.*?)?"',re.S)  #影片圖片
findTitle=re.compile(r'<span class="title">(.*)</span>')  #影片名字
findRating=re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')   #影片評分
findJudge=re.compile(r'<span>(\d*)人評價(jià)</span>')   #影片評價(jià)人數(shù)
findIng=re.compile(r'<span class="ing">(.*)</span>')   #找到概況
findBd=re.compile(r'<p class="">(.*?)</p>',re.S)   #找到影片的相關(guān)內(nèi)容
 

完整代碼

# 引入第三方模塊
from bs4 import BeautifulSoup #網(wǎng)頁解析,獲取數(shù)據(jù)
import re    #正則表達(dá)式,進(jìn)行文字匹配
import urllib.request,urllib.error   #制定URL,獲取網(wǎng)頁數(shù)據(jù)
import xlwt    #進(jìn)行Excel操作
import sqlite3   #進(jìn)行數(shù)據(jù)庫操作
 
def main():
    baseurl="https://movie.douban.com/top250?start="
    dataList=getData(baseurl)
    savepath=".\\豆瓣電影Top250.xls"
 
# 影片詳情鏈接規(guī)則
findLink=re.compile(r'<a href="(.*?)">')   #創(chuàng)建正則表達(dá)式對象,表示規(guī)則(字符串模式)
findImg=re.compile(r'<img.*src="(.*?)?"',re.S)  #影片圖片
findTitle=re.compile(r'<span class="title">(.*)</span>')  #影片名字
findRating=re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')   #影片評分
findJudge=re.compile(r'<span>(\d*)人評價(jià)</span>')   #影片評價(jià)人數(shù)
findIng=re.compile(r'<span class="ing">(.*)</span>')   #找到概況
findBd=re.compile(r'<p class="">(.*?)</p>',re.S)   #找到影片的相關(guān)內(nèi)容
 
def getData(baseurl):
    dataList=[]
    for i in range(0,10):# 調(diào)用獲取頁面信息的函數(shù) 10次
        url=baseurl+ str(i*25)
        html=askURL(url)   # 保存獲取到的源碼
        soup=BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_="item"):  #查找符合要求的字符串
            data=[] #保存電影信息
            item =str(item)
            #獲取影片詳情鏈接
            link=re.findall(findLink,item)[0]   #re庫用來通過正則表達(dá)式查找指定的字符串
            data.append(link)    #添加鏈接
            imgSrc=re.findall(findImg,item)[0]
            data.append(imgSrc)  #添加圖片
            titles=re.findall(findTitle, item)[0]
            if(len(titles)==2):              #片名可能有兩個(gè)名字,一個(gè)中文,一個(gè)外文
                ctitle=titles[0]
                data.append(ctitle)           #添加中文名
                otitle=titles[1].replace("/","")
                data.append(otitle)            #添加外文名
            else:
                data.append(titles[0])  # 添加圖片
                data.append(' ')            #留空,保持Excel數(shù)據(jù)一致性
 
            rating=re.findall(findRating, item)[0]
            data.append(rating)  # 添加評分
 
            judgeNum = re.findall(findJudge, item)[0]
            data.append(judgeNum)  # 添加評分人數(shù)
 
            ing = re.findall(findIng, item)
            if len(ing)!=0:
                ing=ing[0].replace("。","")
                data.append(ing)  # 添加概述
            else:
                data.append(" ")
            bd = re.findall(findBd, item)[0]
            bd=re.sub('<br(\s+)?/>(\s+)?'," ",bd)
            bd=re.sub('/'," ",bd)
            data.append(bd.strip())  # 添加影片的相關(guān)內(nèi)容
 
            dataList.append(data)    #把處理好的電影信息放入dataList
        print(dataList)
    return dataList
 
# 得到指定一個(gè)URL的網(wǎng)頁內(nèi)容
def askURL(url):
    # head用戶代理,本質(zhì)上告訴瀏覽器我們接收什么水平的數(shù)據(jù)
    head={
        "User-Agent": "Mozilla / 5.0(Linux;Android6.0;Nexus5 Build / MRA58N) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.87 Mobile Safari / 537.36"
    }
    request=urllib.request.Request(url,headers=head)
    html=""
    try:
        response=urllib.request.urlopen(request)
        html=response.read().decode("utf-8")
        # print(html)
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)
 
    return html
 
 
def saveData(savepath):
    print("save.....")
 
 
if __name__ =="__main__":
    # 調(diào)用函數(shù)
    main()

到此這篇關(guān)于輕松掌握Python爬蟲,從入門到精通的文章就介紹到這了,更多相關(guān)Python爬蟲學(xué)習(xí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談pytorch中stack和cat的及to_tensor的坑

    淺談pytorch中stack和cat的及to_tensor的坑

    這篇文章主要介紹了pytorch中stack和cat的及to_tensor的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Spyder中如何設(shè)置默認(rèn)python解釋器

    Spyder中如何設(shè)置默認(rèn)python解釋器

    Spyder作為一款流行的Python IDE,支持用戶自定義Python解釋器,包括虛擬環(huán)境的設(shè)置,通過打開Spyder,選擇“Tools”->“Preferences”,在彈出窗口中選擇“Use the following Python interpreter”后,瀏覽并選擇相應(yīng)的解釋器或虛擬環(huán)境路徑
    2024-09-09
  • 如何用Python將圖片轉(zhuǎn)為字符畫

    如何用Python將圖片轉(zhuǎn)為字符畫

    本文主要介紹了用Python將圖片轉(zhuǎn)為黑白字符畫的方法,使用ascii字符把圖片轉(zhuǎn)為黑白字符畫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python如何將數(shù)字變成帶逗號的千分位

    Python如何將數(shù)字變成帶逗號的千分位

    這篇文章主要介紹了Python如何將數(shù)字變成帶逗號的千分位,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 詳解python opencv、scikit-image和PIL圖像處理庫比較

    詳解python opencv、scikit-image和PIL圖像處理庫比較

    這篇文章主要介紹了詳解python opencv、scikit-image和PIL圖像處理庫比較,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于Python實(shí)現(xiàn)簡易文檔格式轉(zhuǎn)換器

    基于Python實(shí)現(xiàn)簡易文檔格式轉(zhuǎn)換器

    這篇文章主要介紹了基于Python和PyQT5實(shí)現(xiàn)簡易的文檔格式轉(zhuǎn)換器,支持.txt/.xlsx/.csv格式的轉(zhuǎn)換。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • 深入理解Python虛擬機(jī)中字節(jié)(bytes)的實(shí)現(xiàn)原理及源碼剖析

    深入理解Python虛擬機(jī)中字節(jié)(bytes)的實(shí)現(xiàn)原理及源碼剖析

    在本篇文章當(dāng)中主要給大家介紹在?cpython?內(nèi)部,bytes?的實(shí)現(xiàn)原理、內(nèi)存布局以及與?bytes?相關(guān)的一個(gè)比較重要的優(yōu)化點(diǎn)——?bytes?的拼接,需要的可以參考一下
    2023-03-03
  • python機(jī)器學(xué)習(xí)之KNN分類算法

    python機(jī)器學(xué)習(xí)之KNN分類算法

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之KNN分類算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • pygame游戲之旅 如何制作游戲障礙

    pygame游戲之旅 如何制作游戲障礙

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅的第6篇,教大家如何制作游戲障礙,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 利用Python實(shí)現(xiàn)批量轉(zhuǎn)換圖片格式

    利用Python實(shí)現(xiàn)批量轉(zhuǎn)換圖片格式

    本文重點(diǎn)介紹普通圖片格式怎么相互轉(zhuǎn)換,如jpg格式圖片怎么批量轉(zhuǎn)化為png格式,在深度學(xué)習(xí)項(xiàng)目中,有時(shí)我們收集到的數(shù)據(jù)集圖片格式不統(tǒng)一,有的代碼支持多種格式圖片輸入,有的則只支持個(gè)別格式,所以這時(shí),我們需要通過腳本來轉(zhuǎn)換圖片格式,不說廢話,直接上代碼
    2025-08-08

最新評論

北安市| 清镇市| 册亨县| 肇源县| 全州县| 丰宁| 苗栗市| 视频| 金溪县| 洛阳市| 浠水县| 防城港市| 察隅县| 若羌县| 富民县| 怀来县| 肇东市| 扎赉特旗| 大同县| 邯郸市| 丰台区| 永寿县| 巴青县| 上饶县| 古田县| 寿阳县| 清涧县| 大足县| 虹口区| 白河县| 来安县| 前郭尔| 成武县| 海兴县| 江北区| 永安市| 水富县| 榆社县| 江津市| 阿勒泰市| 梁平县|