爬蟲大做業之爬取筆趣閣小說

# _*_ coding:utf-8 _*_
import requests
import threading
from bs4 import BeautifulSoup
import re
import os
import time

req_header={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'UM_distinctid=162f5f44f0113-0313b684ffd29e-5e4c2719-100200-162f5f44f05116; __jsluid=d26199ff490223142ead3dca3b417f0d; PHPSESSID=rcqhhvqkvd9ggs9mqarotu54n7; CNZZDATA1272873895=1502087634-1524539933-null%7C1524545333',
'Host': 'm.biquge.com.tw',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.10 Mobile Safari/537.36',

}
req_url_base='http://m.biquge.com.tw/'           #小說主地址
req_url=req_url_base+"wapbook/2016.html"                       #單獨一本小說地址
txt_section=req_url_base+"wapbook/"+'2016_1196115.html'                       #某一章頁面地址

# 請求當前章節頁面  params爲請求參數
r=requests.get(str(txt_section),params=req_header)
# #soup轉換
soup=BeautifulSoup(r.text,"html.parser")
# #獲取章節名稱
# print(soup)
section_name=soup.select('#novelbody .content_title  h1')[0].text
# print(section_name)
# #獲取章節文本
section_text=soup.select('#novelbody .content_novel #novelcontent p' )[0].text

# for ss in section_text.select("script"):                #刪除無用項
#     ss.decompose()
# #按照指定格式替換章節內容,運用正則表達式
section_text=re.sub( '\s+', '\r\n\t', section_text).strip('\r\n')
# print(section_text)
# print('章節名:'+section_name)
# print("章節內容:\n"+section_text)

from wordcloud import WordCloud
fo = open('1.txt', "ab+")         #打開小說文件
# 以二進制寫入章節題目 須要轉換爲utf-8編碼,不然會出現亂碼
fo.write(('\r' + section_name + '\r\n').encode('UTF-8'))

# 以二進制寫入章節內容
fo.write((section_text).encode('UTF-8'))
fo.close()        #關閉小說文件

f = open('1.txt','r',encoding="UTF-8").read()

wordcloud = WordCloud(font_path='./fonts/simhei.ttf',background_color="white",width=1000, height=860, margin=2).generate(f)

# width,height,margin能夠設置圖片屬性

# generate 能夠對所有文本進行自動分詞,可是他對中文支持很差,對中文的分詞處理請看個人下一篇文章
#wordcloud = WordCloud(font_path = r'D:\Fonts\simkai.ttf').generate(f)
# 你能夠經過font_path參數來設置字體集

#background_color參數爲設置背景顏色,默認顏色爲黑色

import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

wordcloud.to_file('test.png')
# 保存圖片,可是在第三模塊的例子中 圖片大小將會按照 mask 保存

 

此次的做業仍是有難度的,我花了挺多時間的,主要問題就是那個我最後生成的詞雲沒有中文,只是邊框,最後是經過網上查資料找出了問題所在——wordcloud不支持中文,最後添加了中文字體的路徑,就成功了!還要繼續努力喲!html

相關文章
相關標籤/搜索