1. 程式人生 > >Python3使用BeautifulSoup4爬取《三國演義》

Python3使用BeautifulSoup4爬取《三國演義》

文章 解析器 end read print menu contents htm 地址

#!/sur/bin/python
#conding=utf-8
import urllib.request
from bs4 import BeautifulSoup
url="http://www.shicimingju.com/book/sanguoyanyi.html" # 要爬取的網絡地址
menuCode=urllib.request.urlopen(url).read() # 將網頁源代碼賦予menuCode
soup=BeautifulSoup(menuCode,‘html.parser‘) # 使用html解析器進行解析
menu=soup.find_all(id="mulu") # 在soup中找到id為mulu的節點
values = ‘,‘.join(str(v) for v in menu) # 將 menu轉換為str類型
soup2=BeautifulSoup(values,‘html.parser‘)
soup2=soup2.ul # 用子節點代替soup2
print("-------------------soup2.contents----------------------------")
print(soup2.contents)
bookName=soup.h1.string # 找到了書名
print(u"----------------------‘書名‘------------------------------")
print(u"書名:"+bookName)
f=open(‘D://‘+bookName+‘.doc‘,‘a‘,encoding=‘utf8‘)
f.write(bookName+"\n")#寫入書名
Desc=soup.p.get_text() #簡介
f.write(Desc+"\n")#寫入簡介
print(u"---------------------‘簡介‘------------------------------")
print(Desc)
bookMenu=[] # 章節list
bookMenuUrl=[] # 章節url的list
#遍歷list要in len(list)-1,因為list第一個元素list[0]
print(u"----------------------------章節和對應的url鏈接----------------------------")
for i in range(1,len(soup2.contents)-1): # 依次爬取書的章節
bookMenu.append(soup2.contents[i].string)
bookMenuUrl.append(soup2.contents[i].a[‘href‘])
con=u‘章節:%s,URL:%s‘ %(soup2.contents[i].string,soup2.contents[i].a[‘href‘])
print(con)
f.write(con+"\n")#寫入章節以及對應的URL鏈接
#獲取文章內容:
"""
通過遍歷章節的url來獲取每個url對應的文章內容。
"""
urlBegin="http://www.shicimingju.com" #初始URL
for i in range (0,len(bookMenuUrl)):# 依次替換每個章節的url,讀取每章頁面的內容
chapterCode=urllib.request.urlopen(urlBegin+bookMenuUrl[i]).read()#拼接成完整的URL,然後讀出內容
chapterSoup=BeautifulSoup(chapterCode,‘html.parser‘) # 使用BS讀取解析網頁代碼
chapterResult=chapterSoup.find_all(id=‘con2‘) # 找到id=‘con2’的節點
chapterResult = ‘,‘.join(str(v) for v in chapterResult) # 將節點內的代碼轉為str類型
chapterSoup2=BeautifulSoup(chapterResult,‘html.parser‘) # 使用BS解析節點內代碼
# print(chapterSoup2.contents)
chapterText=chapterSoup2.get_text()#獲取文檔內容
print(chapterText)
f.write(bookMenu[i]) # 寫入文件每章標題
f.write(chapterText)

Python3使用BeautifulSoup4爬取《三國演義》