天天看點

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

作者:梁園燕栖

每天的學習過程都是自我更新和自我提高的過程,将這個過程分享出來是一種樂趣,讓更多的人見證我的學習成果,并可能從我的學習成果中獲得收益。這樣一個人的樂趣就變成了很多人的樂趣。

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

今天使用requests 和BeautifulSoup在Pycharm環境中爬取網絡小說,參考書中案例,爬取金镛先生的小說。步驟如下:

1、打開網頁,F12打開開發者模式,在源代碼中找到對應爬取的文本内容,看是否具有唯一性。如果具有唯一性,就可以直接爬取,沒有唯一性,呃……後面學習中看看能否找到爬取方案。

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

2、在Pycharm環境中調用requests 和BeautifulSoup,編寫對應爬取代碼(書中196頁代碼return的縮進有誤,調整之後可以運作)

3、點選運作,自動完成爬取,金镛先生的簡介就出現在了結果顯示框中。

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

4、繼續修改代碼,找到清單名稱的上級代碼,按圖索骥,開始爬取小說清單的内容

5、爬取之後的效果,隻是顯示了一個小說名稱和連結,這又是為什麼呢?

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

6、完整的代碼如下:

'''
eg-1 通過requests 和BeautifulSoup 爬取金镛小說
'''
import requests
from bs4 import BeautifulSoup
def getHTML(url):
    try:
        r=requests.get(url)
        html=r.text
        return html
    except:
        print("error")

def getJinYong(html):
    soup=BeautifulSoup(html,"html.parser")
    target = soup.p.string
    return target
#書中196頁,return代碼的縮進有誤,正常應該縮進到target一樣的程度

def getBookURL(html):
    book_url={}
    soup=BeautifulSoup(html,"html.parser")
    target = soup.select(".co3 a")
    book = [item.string for item in target]
    url=[item.attrs["href"] for item in target]
    for item,url in zip(book,url):
        book_url[item]="http://www.wuxia.net.cn/"+url
        return book_url
if __name__=="__main__":
    url = "http://www.wuxia.net.cn/author/jinyong.html"
    html=getHTML(url)
    print("爬取金镛先生簡介文本為:", getJinYong(html))
    print("爬取金镛小說及連結位址為:",getBookURL(html))           

#加油!

#一點一滴的努力,未來都會有回報。

#歲月靜好,不去羨慕旁人,隻做好自己,花朵總會綻放。

#Python新征程22#用requests和BeautifulSoup爬取網絡小說

#以上學習感悟來自于《網絡爬蟲進化論:從Excel爬蟲到Python爬蟲》(中國水利水電出版社2021年出版)