欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python7個(gè)爬蟲小案例詳解(附源碼)下篇

 更新時(shí)間:2023年01月11日 17:12:49   作者:艾派森  
這篇文章主要介紹了Python7個(gè)爬蟲小案例詳解(附源碼)上篇,本文章內(nèi)容詳細(xì),通過案例可以更好的理解爬蟲的相關(guān)知識(shí),七個(gè)例子分為了三部分,本次為下篇,共有三道題,需要的朋友可以參考下

本次的7個(gè)python爬蟲小案例涉及到了re正則、xpath、beautiful soup、selenium等知識(shí)點(diǎn),非常適合剛?cè)腴Tpython爬蟲的小伙伴參考學(xué)習(xí)。

前言

關(guān)于Python7個(gè)爬蟲小案例的文章分為三篇,本篇為下篇,共三題,其余兩篇內(nèi)容請(qǐng)關(guān)注!

題目五:

實(shí)現(xiàn)多種方法模擬登錄知乎,并爬取與一個(gè)與江漢大學(xué)有關(guān)問題和答案

首先使用selenium打開知乎登錄頁面,接著使用手機(jī)進(jìn)行二維碼掃描登錄

進(jìn)入頁面后,打開開發(fā)者工具,找到元素,,定位輸入框,輸入漢江大學(xué),然后點(diǎn)擊搜索按鈕

以第二條帖子為例,進(jìn)行元素分析 。

源代碼及結(jié)果截圖:

from time import sleep
from selenium.webdriver.chrome.service import Service
from selenium.webdriver import Chrome,ChromeOptions
from selenium.webdriver.common.by import By
import warnings
 
def main():
    #忽略警告
    warnings.filterwarnings("ignore")
    # 創(chuàng)建一個(gè)驅(qū)動(dòng)
    service = Service('chromedriver.exe')
    options = ChromeOptions()
    # 偽造瀏覽器
    options.add_experimental_option('excludeSwitches', ['enable-automation','enable-logging'])
    options.add_experimental_option('useAutomationExtension', False)
    # 創(chuàng)建一個(gè)瀏覽器
    driver = Chrome(service=service,options=options)
    # 繞過檢測(cè)
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
               Object.defineProperty(navigator, 'webdriver', {
               get: () => false
               })
           """
    })
    # 打開知乎登錄頁面
    driver.get('https://www.zhihu.com/')
    sleep(30)
    # 點(diǎn)擊搜索框
    driver.find_element(By.ID,'Popover1-toggle').click()
    # 輸入內(nèi)容
    driver.find_element(By.ID,'Popover1-toggle').send_keys('漢江大學(xué)')
    sleep(2)
    # 點(diǎn)擊搜索圖標(biāo)
    driver.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/header/div[2]/div[1]/div/form/div/div/label/button').click()
    # 等待頁面加載完
    driver.implicitly_wait(20)
    # 獲取標(biāo)題
    title = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/h2/div/a/span').text
    # 點(diǎn)擊閱讀全文
    driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span/div/button').click()
    sleep(2)
    # 獲取帖子內(nèi)容
    content = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span[1]/div/span/p').text
    # 點(diǎn)擊評(píng)論
    driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/div[3]/div/div/button[1]').click()
    sleep(2)
    # 點(diǎn)擊獲取更多評(píng)論
    driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div[2]/div/div/div[2]/div[2]/div/div[3]/button').click()
    sleep(2)
    # 獲取評(píng)論數(shù)據(jù)的節(jié)點(diǎn)
    divs = driver.find_elements(By.XPATH,'/html/body/div[6]/div/div/div[2]/div/div/div/div[2]/div[3]/div')
    try:
        for div in divs:
            # 評(píng)論內(nèi)容
            comment = div.find_element(By.XPATH,'./div/div/div[2]').text
            f.write(comment)  # 寫入文件
            f.write('\n')
            print(comment)
    except:
        driver.close()
 
if __name__ == '__main__':
    # 創(chuàng)建文件存儲(chǔ)數(shù)據(jù)
    with open('05.txt','a',encoding='utf-8')as f:
        main()

 題目六:

 綜合利用所學(xué)知識(shí),爬取某個(gè)某博用戶前5頁的微博內(nèi)容

這里我們選取了人民日?qǐng)?bào)的微博內(nèi)容進(jìn)行爬取,具體頁面我就不放這了,怕違規(guī)。

源代碼:

import requests
import csv
from time import sleep
import random
 
def main(page):
    url = f'https://weibo.com/ajax/statuses/mymblog?uid=2803301701&page={page}&feature=0&since_id=4824543023860882kp{page}'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
        'cookie':'SINAGLOBAL=6330339198688.262.1661412257300; ULV=1661412257303:1:1:1:6330339198688.262.1661412257300:; PC_TOKEN=8b935a3a6e; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWoQDW1G.Vsux_WIbm9NsCq5JpX5KMhUgL.FoMNShMN1K5ESKq2dJLoIpjLxKnL1h.LB.-LxKqLBoBLB.-LxKqLBKeLB--t; ALF=1697345086; SSOLoginState=1665809086; SCF=Auy-TaGDNaCT06C4RU3M3kQ0-QgmTXuo9D79pM7HVAjce1K3W92R1-fHAP3gXR6orrHK_FSwDsodoGTj7nX_1Hw.; SUB=_2A25OTkruDeRhGeFJ71UW-S7OzjqIHXVtOjsmrDV8PUNbmtANLVKmkW9Nf9yGtaKedmyOsDKGh84ivtfHMGwvRNtZ; XSRF-TOKEN=LK4bhZJ7sEohF6dtSwhZnTS4; WBPSESS=PfYjpkhjwcpEXrS7xtxJwmpyQoHWuGAMhQkKHvr_seQNjwPPx0HJgSgqWTZiNRgDxypgeqzSMsbVyaDvo7ng6uTdC9Brt07zYoh6wXXhQjMtzAXot-tZzLRlW_69Am82CXWOFfcvM4AzsWlAI-6ZNA=='
    }
    resp = requests.get(url,headers=headers)
    data_list = resp.json()['data']['list']
    for item in data_list:
        created_time = item['created_at']  # 發(fā)布時(shí)間
        author = item['user']['screen_name']   # 作者
        title = item['text_raw']   # 帖子標(biāo)題
        reposts_count = item['reposts_count']  # 轉(zhuǎn)發(fā)數(shù)
        comments_count = item['comments_count']  # 評(píng)論數(shù)
        attitudes_count = item['attitudes_count']  # 點(diǎn)贊數(shù)
        csvwriter.writerow((created_time,author,title,reposts_count,comments_count,attitudes_count))
        print(created_time,author,title,reposts_count,comments_count,attitudes_count)
    print(f'第{page}頁爬取完畢')
 
if __name__ == '__main__':
    # 創(chuàng)建保存數(shù)據(jù)的csv文件
    with open('06-2.csv','a',encoding='utf-8',newline='')as f:
        csvwriter = csv.writer(f)
        # 添加文件表頭
        csvwriter.writerow(('發(fā)布時(shí)間','發(fā)布作者','帖子標(biāo)題','轉(zhuǎn)發(fā)數(shù)','評(píng)論數(shù)','點(diǎn)贊數(shù)'))
        for page in range(1,6):  # 爬取前5頁數(shù)據(jù)
            main(page)
            sleep(5+random.random())

 題目七:

自選一個(gè)熱點(diǎn)或者你感興趣的主題,爬取數(shù)據(jù)并進(jìn)行簡(jiǎn)要數(shù)據(jù)分析

(例如,通過爬取電影的名稱、類型、總票房等數(shù)據(jù)統(tǒng)計(jì)分析不同類型電影的平均票房,十年間每年票房冠軍的票房走勢(shì)等;通過爬取中國各省份地區(qū)人口數(shù)量,統(tǒng)計(jì)分析我國人口分布等)

本次選取的網(wǎng)址是藝恩娛數(shù),目標(biāo)是爬取里面的票房榜數(shù)據(jù),通過開發(fā)者工具抓包分析找到數(shù)據(jù)接口,然后開始編寫代碼進(jìn)行數(shù)據(jù)抓取。 

源代碼及結(jié)果截圖:

import requests
import csv
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示
plt.rcParams['axes.unicode_minus'] = False   #解決符號(hào)無法顯示
 
def main():
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',}
    data = {
        'r': '0.9936776079863086',
        'top': '50',
        'type': '0',
    }
    resp = requests.post('https://ys.endata.cn/enlib-api/api/home/getrank_mainland.do', headers=headers, data=data)
    data_list = resp.json()['data']['table0']
    for item in data_list:
        rank = item['Irank']  # 排名
        MovieName = item['MovieName']  # 電影名稱
        ReleaseTime = item['ReleaseTime']  # 上映時(shí)間
        TotalPrice = item['BoxOffice']   # 總票房(萬)
        AvgPrice = item['AvgBoxOffice']   # 平均票價(jià)
        AvgAudienceCount = item['AvgAudienceCount']  # 平均場(chǎng)次
        # 寫入csv文件
        csvwriter.writerow((rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount))
        print(rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount)
 
def data_analyze():
    # 讀取數(shù)據(jù)
    data = pd.read_csv('07.csv')
    # 從上映時(shí)間中提取出年份
    data['年份'] = data['上映時(shí)間'].apply(lambda x: x.split('-')[0])
    # 各年度上榜電影總票房占比
    df1 = data.groupby('年份')['總票房(萬)'].sum()
    plt.figure(figsize=(6, 6))
    plt.pie(df1, labels=df1.index.to_list(), autopct='%1.2f%%')
    plt.title('各年度上榜電影總票房占比')
    plt.show()
    # 各個(gè)年份總票房趨勢(shì)
    df1 = data.groupby('年份')['總票房(萬)'].sum()
    plt.figure(figsize=(6, 6))
    plt.plot(df1.index.to_list(), df1.values.tolist())
    plt.title('各年度上榜電影總票房趨勢(shì)')
    plt.show()
    # 平均票價(jià)最貴的前十名電影
    print(data.sort_values(by='平均票價(jià)', ascending=False)[['年份', '電影名稱', '平均票價(jià)']].head(10))
    # 平均場(chǎng)次最高的前十名電影
    print(data.sort_values(by='平均場(chǎng)次', ascending=False)[['年份', '電影名稱', '平均場(chǎng)次']].head(10))
 
 
if __name__ == '__main__':
    # 創(chuàng)建保存數(shù)據(jù)的csv文件
    with open('07.csv', 'w', encoding='utf-8',newline='') as f:
        csvwriter = csv.writer(f)
        # 添加文件表頭
        csvwriter.writerow(('排名', '電影名稱', '上映時(shí)間', '總票房(萬)', '平均票價(jià)', '平均場(chǎng)次'))
        main()
    # 數(shù)據(jù)分析
    data_analyze()

 從年度上榜電影票房占比來看,2019年占比最高,說明2019年這一年的電影質(zhì)量都很不錯(cuò),上榜電影多而且票房高。

從趨勢(shì)來看,從2016年到2019年,上榜電影總票房一直在增長,到2019年達(dá)到頂峰,說明這一年電影是非常的火爆,但是從2020年急劇下滑,最大的原因應(yīng)該是這一年年初開始爆發(fā)疫情,導(dǎo)致賀歲檔未初期上映,而且由于疫情影響,電影院一直處于關(guān)閉狀態(tài),所以這一年票房慘淡。

這篇關(guān)于Python7個(gè)爬蟲小案例詳解(附源碼)下篇的文章就介紹到這了,其他兩個(gè)部分的內(nèi)容(上、中篇)請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。

好了,本次七個(gè)案例的分享到此全部結(jié)束,希望對(duì)剛?cè)胧峙老x的小伙伴有所幫助。

 希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)感知機(jī)線性分類模型示例代碼

    python實(shí)現(xiàn)感知機(jī)線性分類模型示例代碼

    這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)感知機(jī)線性分類模型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 基于Python實(shí)現(xiàn)wifi連接小程序

    基于Python實(shí)現(xiàn)wifi連接小程序

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言編寫一個(gè)簡(jiǎn)單的連接Wi-Fi的程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • 在Python中分別打印列表中的每一個(gè)元素方法

    在Python中分別打印列表中的每一個(gè)元素方法

    今天小編就為大家分享一篇在Python中分別打印列表中的每一個(gè)元素方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python?3.10上如何安裝pyqt5

    python?3.10上如何安裝pyqt5

    這篇文章主要介紹了python?3.9上安裝pyqt5的詳細(xì)步驟,本文分步驟給大家介紹如何在python?3.9?上安裝?pyqt5,需要的朋友可以參考下
    2022-07-07
  • Python模塊文件結(jié)構(gòu)代碼詳解

    Python模塊文件結(jié)構(gòu)代碼詳解

    這篇文章主要介紹了Python模塊文件結(jié)構(gòu)代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 簡(jiǎn)明 Python 基礎(chǔ)學(xué)習(xí)教程

    簡(jiǎn)明 Python 基礎(chǔ)學(xué)習(xí)教程

    無論您剛接觸電腦還是一個(gè)有經(jīng)驗(yàn)的程序員,本書都將有助您學(xué)習(xí)使用Python語言
    2007-02-02
  • 基于Python編寫一個(gè)自動(dòng)關(guān)機(jī)程序

    基于Python編寫一個(gè)自動(dòng)關(guān)機(jī)程序

    這篇文章主要介紹了基于Python編寫的一個(gè)自動(dòng)關(guān)機(jī)程序,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的同學(xué)可以學(xué)習(xí)一下
    2022-01-01
  • Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說明

    Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說明

    這篇文章主要介紹了Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 簡(jiǎn)單介紹Python的第三方庫yaml

    簡(jiǎn)單介紹Python的第三方庫yaml

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python的第三方庫yaml展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • PyTorch如何搭建一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)

    PyTorch如何搭建一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)

    這篇文章主要介紹了PyTorch如何搭建一個(gè)簡(jiǎn)單的網(wǎng)絡(luò),幫助大家更好的理解和學(xué)習(xí)PyTorch,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論