国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書

這篇具有很好參考價值的文章主要介紹了【Python】01快速上手爬蟲案例一:搞定豆瓣讀書。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

實戰(zhàn)是最好的老師,直接案例操作,快速上手。

案例一,爬取數(shù)據(jù),最終效果圖:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言


一、VSCode+Python環(huán)境搭建

開發(fā)環(huán)境:MacBook Pro + VSCode + Python。

打開最新版VSCode,安裝Python開發(fā)環(huán)境,快捷鍵:cmd+shift+x。

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言
選擇Python解釋器,快捷鍵:cmd+shift+p。輸入:Python: Select Interpreter,選擇解釋器。
【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言
寫“hello world”。
新建文件,輸入print(‘hello world~’),另存為hello.py文件。
shift+enter 運行:
【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

二、爬蟲案例一

以爬取“豆瓣讀書TOP250”的書籍為案例。

網(wǎng)址鏈接:https://book.douban.com/top250?start=0

1、爬取第一頁數(shù)據(jù)

代碼如下:

import requests
def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    print(html)  
    return html

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

head->User-Agent的值可以從這個地方獲取:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言
如果import requests報錯,使用pip3 install requests安裝。

運行之后,結果如下:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

第一頁25個,都以html的形式顯示了出來,第25個為書籍《野草》。

2、爬取所有頁數(shù)據(jù)

代碼如下:


import requests
def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    r = requests.get(url, headers = head)
    html = r.text
    print(html)

def getData(baseurl):
    for i in range(0, 10):
        url = baseurl + str(i * 25)
        html = askUrl(url)

if __name__ == "__main__": 
    baseurl = "https://book.douban.com/top250?start="
    getData(baseurl)

運行之后,結果如下:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

最后一頁,最后一個,為書籍《哈姆萊特》。

3、格式化html數(shù)據(jù)

上面1和2,只是輸出了html源碼,現(xiàn)在按自己需要的幾個字段進行格式化。

分別取這4個字段:封面圖、書籍名稱、作者(出版社、價格等)、引用。

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

這里使用lxml庫,解析html。

# 導入lxml庫子模塊etree
from lxml import etree 

格式化代碼如下:

import requests
from lxml import etree 

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    parse = etree.HTML(html)  
    # 數(shù)據(jù)
    # all_tr = parse.xpath('/html[@class="ua-mac ua-webkit book-new-nav"]/body/div[@id="wrapper"]/div[@id="content"]/div[@class="grid-16-8 clearfix"]/div[@class="article"]/div[@class="indent"]/table')
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    for tr in all_tr:
        tr_data = {
        'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面圖
        'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 書名
        'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
        'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
        }
        print(tr_data)

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

如果報錯:

urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. 

解決方法:

pip3 install urllib3==1.26.15

結果如下:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

數(shù)據(jù),已經(jīng)非常清晰了。

PS:使用parse.xpath,最重要的是獲取到準確的xpath值。

兩個方法:

方法一:Google Chrome瀏覽器插件:xpath helper。

效果如下:

彈出插件面板:cmd+shift+x。

選中:shift。

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言
取到的值為:

# 原始值
/html[@class='ua-mac ua-webkit book-new-nav']/body/div[@id='wrapper']/div[@id='content']/div[@class='grid-16-8 clearfix']/div[@class='article']/div[@class='indent']/table[1]/tbody/tr[@class='item']

# 優(yōu)化后的值(使用此值,去掉了tbody和[1])
/html[@class='ua-mac ua-webkit book-new-nav']/body/div[@id='wrapper']/div[@id='content']/div[@class='grid-16-8 clearfix']/div[@class='article']/div[@class='indent']/table

方法二:Google Chrome瀏覽器,查看源代碼。

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

取到的值為:

# 原始值
//*[@id="content"]/div/div[1]/div/table[1]/tbody/tr

# 優(yōu)化后的值(使用此值,去掉了tbody和[1])
//*[@id="content"]/div/div[1]/div/table

每一個字段對應的xpath值,也是這么獲取。

4、導出excel文件

生成csv格式文件。

導入csv庫:

import csv

導出cvs文件(第一頁25條),代碼如下:

import requests
from lxml import etree 
import csv

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    html=""  
    r = requests.get(url, headers = head) 
    html = r.text 
    parse = etree.HTML(html)  
    # 數(shù)據(jù)
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    # 創(chuàng)建book.csv文件
    with open('book.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
        header = ['封面','名稱', '作者', '引用']  
        writer = csv.writer(fp)  
        writer.writerow(header)

    for tr in all_tr:
        tr_data = {
        'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面圖
        'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 書名
        'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
        'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
        }
        # print(tr_data)
        # 寫入數(shù)據(jù)行
        with open('book.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
            fieldnames = ['vover','name', 'author', 'quote']  
            writer = csv.DictWriter(fp, fieldnames)  
            writer.writerow(tr_data)

if __name__ == "__main__": 
    askUrl("https://book.douban.com/top250?start=0") 

導出的book.csv文件(第一頁),如下:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言

導出cvs文件(所有的250條),代碼如下:

import requests
from lxml import etree 
import csv

def askUrl(url):
    head = { 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
    }
    r = requests.get(url, headers = head)
    html = r.text
    # print(html)

    parse = etree.HTML(html)
    all_tr = parse.xpath('//*[@id="content"]/div/div[1]/div/table')

    for tr in all_tr:
        tr_data = {
            'vover': ''.join(tr.xpath('./tr/td[1]/a/img/@src')).strip(), # 封面圖
            'name': ''.join(tr.xpath('./tr/td[2]/div[@class="pl2"]/a/text()')).strip(), # 書名
            'author': ''.join(tr.xpath('./tr/td[2]/p[1]/text()')).strip(), # 作者
            'quote': ''.join(tr.xpath('./tr/td[2]/p[2]/span/text()')).strip() # 引用
            }
            # print(tr_data)
        # 寫入數(shù)據(jù)行
        with open('bookall.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
                fieldnames = ['vover','name', 'author', 'quote']  
                writer = csv.DictWriter(fp, fieldnames)  
                writer.writerow(tr_data)

def getData(baseurl):
    # 創(chuàng)建book.csv文件
    with open('bookall.csv', 'a', encoding='utf_8_sig', newline='') as fp:  
        header = ['封面','名稱', '作者', '引用']  
        writer = csv.writer(fp)  
        writer.writerow(header)
    # 插入25頁的數(shù)據(jù)
    for i in range(0, 10):
        url = baseurl + str(i * 25)
        html = askUrl(url)


if __name__ == "__main__": 
    baseurl = "https://book.douban.com/top250?start="
    getData(baseurl)

導出的book.csv文件(所有頁250條數(shù)據(jù)),如下:

【Python】01快速上手爬蟲案例一:搞定豆瓣讀書,Python,python,爬蟲,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-836030.html


到了這里,關于【Python】01快速上手爬蟲案例一:搞定豆瓣讀書的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 最強Python開源庫PyTorch入門實戰(zhàn)(案例實戰(zhàn))+快速上手TorchServe

    作者:禪與計算機程序設計藝術 在過去幾年里,深度學習領域涌現(xiàn)了一大批高水平的模型,這些模型基于大量的數(shù)據(jù)和GPU計算能力實現(xiàn)了炫酷的效果。這其中最具代表性的是卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks, CNN),其網(wǎng)絡結構可以學習到圖像、視頻、文本等多種模態(tài)特

    2024年02月07日
    瀏覽(27)
  • python爬蟲項目——豆瓣Top250

    python爬蟲項目——豆瓣Top250

    我們今天講一個爬蟲項目案例,實現(xiàn)對豆瓣電影top榜的爬取 。把爬取的數(shù)據(jù)存到我們電腦本地文件當中。通過這個項目可以讓我們真正感受到爬蟲的帶給我們的樂趣?,F(xiàn)在我來講一下思路以及實現(xiàn)方法,因為豆瓣電影的這個反爬機制不高,所以我們可以通過這個案列快速上手

    2024年02月11日
    瀏覽(41)
  • 【學習筆記】Flowable - 01 - 工作流 快速上手

    【學習筆記】Flowable - 01 - 工作流 快速上手

    JDK8 Flowable6 (6.3 or 6.7.2) Postgresql (MySQL同樣支持) 波哥:2023年Flowable詳細講解 波哥:2022年Flowable教程-基礎篇 Flowable BPMN 用戶手冊 中文 官方網(wǎng)站 官方github源碼 IDEA低版本提供一個BPMN解析插件: 但是并沒有很好的支持流程的繪制。 存在幾個工具: 古老的Eclipse(太老的不推薦 官

    2024年01月19日
    瀏覽(29)
  • 【爬蟲實戰(zhàn)】用python爬豆瓣電影《熱烈》短評

    【爬蟲實戰(zhàn)】用python爬豆瓣電影《熱烈》短評

    目錄 一、爬蟲對象-豆瓣電影短評 二、爬取結果 三、爬蟲代碼講解 三、演示視頻 四、獲取完整源碼 您好!我是@馬哥python說,一名10年程序猿。 今天分享一期爬蟲案例,爬取的目標是:豆瓣上任意一部電影的短評(注意:是短評,不是影評?。?,以《熱烈》這部電影為例:

    2024年02月09日
    瀏覽(22)
  • Python requests爬蟲豆瓣圖片返回數(shù)據(jù)為空。

    爬個豆瓣圖片,記錄個小問題,發(fā)現(xiàn)爬取豆瓣原圖的時候拿不到數(shù)據(jù),返回為空,爬小圖可以,爬其他網(wǎng)站的也都正常,最后發(fā)現(xiàn)是header中If-Modified-Since這個參數(shù)的原因,加上了就拿不到數(shù)據(jù),去掉就行。

    2024年02月09日
    瀏覽(21)
  • 【爬蟲實戰(zhàn)】用python爬豆瓣電影《熱烈》的短評!

    【爬蟲實戰(zhàn)】用python爬豆瓣電影《熱烈》的短評!

    您好!我是@馬哥python說,一名10年程序猿。 今天分享一期爬蟲案例,爬取的目標是:豆瓣上任意一部電影的短評(注意:是短評,不是影評?。浴稛崃摇愤@部電影為例: 爬取以上6個段,含: 頁碼, 評論者昵稱, 評論星級, 評論時間, 評論者IP屬地, 有用數(shù), 評論內(nèi)容

    2024年02月03日
    瀏覽(16)
  • Python爬蟲實戰(zhàn)-批量爬取豆瓣電影排行信息

    Python爬蟲實戰(zhàn)-批量爬取豆瓣電影排行信息

    大家好,我是python222小鋒老師。 近日鋒哥又卷了一波Python實戰(zhàn)課程-批量爬取豆瓣電影排行信息,主要是鞏固下Python爬蟲基礎 視頻版教程: Python爬蟲實戰(zhàn)-批量爬取豆瓣電影排行信息 視頻教程_嗶哩嗶哩_bilibili Python爬蟲實戰(zhàn)-批量爬取豆瓣電影排行信息 視頻教程作者:小鋒老師

    2024年02月05日
    瀏覽(30)
  • python爬蟲小練習——爬取豆瓣電影top250

    python爬蟲小練習——爬取豆瓣電影top250

    將爬取的數(shù)據(jù)導入到表格中,方便人為查看。 三大功能 1,下載所有網(wǎng)頁內(nèi)容。 2,處理網(wǎng)頁中的內(nèi)容提取自己想要的數(shù)據(jù) 3,導入到表格中 https://www.bilibili.com/video/BV1CY411f7yh/?p=15

    2024年01月17日
    瀏覽(22)
  • python爬蟲——爬取豆瓣top250電影數(shù)據(jù)(適合初學者)

    python爬蟲——爬取豆瓣top250電影數(shù)據(jù)(適合初學者)

    爬取豆瓣top250其實是初學者用于練習和熟悉爬蟲技能知識的簡單實戰(zhàn)項目,通過這個項目,可以讓小白對爬蟲有一個初步認識,因此,如果你已經(jīng)接觸過爬蟲有些時間了,可以跳過該項目,選擇更有挑戰(zhàn)性的實戰(zhàn)項目來提升技能。當然,如果你是小白,這個項目就再適合不過

    2024年02月07日
    瀏覽(23)
  • 【Python】爬蟲練習-爬取豆瓣網(wǎng)電影評論用戶的觀影習慣數(shù)據(jù)

    【Python】爬蟲練習-爬取豆瓣網(wǎng)電影評論用戶的觀影習慣數(shù)據(jù)

    目錄 前言 一、配置環(huán)境 1.1、 安裝Python 1.2、?安裝Requests庫和BeautifulSoup庫 1.3.、安裝Matplotlib 二、登錄豆瓣網(wǎng)(重點) 2.1、獲取代理 2.2、測試代理ip是否可用 2.3、設置大量請求頭隨機使用 2.4、登錄豆瓣網(wǎng) 三、爬取某一部熱門電影數(shù)據(jù) 3.1、爬取全部長、短評論 3.2、獲取用戶

    2024年02月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包