Python學(xué)習(xí)筆記-1

有人說簡書首頁上的雞湯文很多,雖然我看到不少干貨和很好的作者,為了用數(shù)據(jù)來說明,就想到用Python把數(shù)據(jù)抓取下來做一個分析,看看首頁的熱門上有多少雞湯文,有多少關(guān)于IT編程的文章,簡書上評論和寫作的群體有什么特點。

完成:把簡書首頁熱門文章標(biāo)題,鏈接,閱讀量、評論、打賞爬取下來,保存到一個Excel文件中。每天定時抓取數(shù)據(jù),Excel進行分類匯總分析,再對一些文章翻閱。
再對熱門文章中的評論者信息抓取分析,對文章點“喜歡”的用戶抓取分析(從郵件中抓取用戶,反向獲得信息)

之前Python看過半天時間,這次學(xué)習(xí),不系統(tǒng),直接拿現(xiàn)成的代碼理解,一邊測試一邊coding 完成一個小功能。從網(wǎng)上的一小段代碼(抓取圖片Demo)開始學(xué)習(xí),一步步增加功能:

  • 獲取網(wǎng)頁代碼(urllib2)
  • 解析網(wǎng)頁(正則表達式,BeautifulSoup)
    • 從最簡單開始,測試拿到網(wǎng)頁中所有的圖片,保存到本地(抓取網(wǎng)站圖片)
    • 把頁面中所有文章的標(biāo)題拿到,打印出來
    • 拿到一組數(shù)據(jù)(標(biāo)題,鏈接,閱讀量、評論、打賞),按格式打印
  • 把抓取的數(shù)據(jù)寫入Excel(xlwt)
    • 安裝第三方庫 xlwt
    • 測試寫入數(shù)據(jù)到excel(中文的寫入)
    • 封裝方法,把抓取的數(shù)據(jù)寫入excel
    • 開啟定時任務(wù)

以上功能完成后,再回過頭把我忽略的基礎(chǔ)知識快速過一遍。


遇到的問題:

  • 正則表達式,urllib2直接讀取到網(wǎng)頁后,需要用正則表達式匹配取出文章標(biāo)題等信息。主要在匹配文章標(biāo)題、閱讀數(shù)量,換行、空格的匹配上試了多次,在取出關(guān)聯(lián)數(shù)據(jù)上花了一些時間。

  • 開始采取的方法正則表達式直接匹配網(wǎng)頁的方式,對網(wǎng)頁代碼進行分析,找出標(biāo)題,鏈接,閱讀量、評論的代碼的特征。后來采用BeautifulSoup

  • Excel庫引入的問題。在命令行安裝xlwt,控制臺上可以使用,但是在PyCharm不能使用xlwt,顯示沒有導(dǎo)入庫。Mac中PyCharm添加第三庫的地方一直沒有找到,最后只好用搜索的方式,搜Project Interpreter找到。 (但是在安裝BeautifulSoup后,PyCharm中就直接可以用了)

應(yīng)該是在Preferences下,PyCharm添加第三方庫只對工程?
  • BeautifulSoup在命令行pip安裝失敗,直接下載源碼進行安裝。

  • Excel追加數(shù)據(jù)和寫入數(shù)據(jù)不同,xlwt操作每次會重寫excel文件,追加寫入數(shù)據(jù)用xlutils,在PyCharm中xlutils也沒有什么代碼提示和補全。

rb = open_workbook(filename) #應(yīng)該是以只讀的方式拿到文件 
wb = copy(rb)                #拷貝成一個可寫的工作簿?
sheet = wb.get_sheet(0)
sheet.write(0, 0, value.decode('utf-8'))  #寫入中文
wb.save(filename)  

從這段代碼開始

import re  
import urllib  
  
def getHtml(url):  
    page = urllib.urlopen(url)  
    html = page.read()  
    return html  
  
def getImg(html):  
    reg = r'src="(.+?\.jpg)" pic_ext'  
    imgre = re.compile(reg)  
    imglist = imgre.findall(html)  
    x = 0  
    for imgurl in imglist:  
        urllib.urlretrieve(imgurl,'%s.jpg' % x)  
        x = x + 1          
     
html = getHtml("http://tieba.baidu.com/p/2460150866")  
getImg(html)  

就是對以上代碼的拆解,按上述步驟添加我設(shè)想的功能,再進行封裝。

體會:

  1. Python上手比較快,學(xué)習(xí)成本低,大部分內(nèi)容我參照Java來理解,函數(shù)式編程方便快捷,可以說是write less, do more
  2. 一些庫的用法我還沒有很好理解,但能經(jīng)過調(diào)試快速做出東西來,還需要深入了解。如xlwt, 特別是xlutils可能沒有找到類的特性,不像urllib2在IDE中有提示就可以直接知道怎么用。
  3. 下一步多看一些github上的代碼,搞一些小工具和好玩的東西。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容