看完了《簡明python教程》這本書,頓覺手癢,欲磨刀大幹一番。
剛好今天看到乙個人**上的資料挺不錯的,想要儲存下來。可是文章又特別得多,要是我一次一次的去複製貼上,這還不得累死人。於是乎就想放棄。但突然靈光一閃,之前一直聽說python寫爬蟲什麼的,便自己也一直想嘗試著用python寫一次,這不是正是乙個好機會使用爬蟲將文字爬下來的時候嗎?(按照程式設計師的邏輯,哈哈)
於是便有了以下的工作。
因為我想爬的是一篇寫作素材**的內容,所以以下以這個**為例:
url="";
htmlr=requests.get(url);
class="title">
class="l">
href=""
title="【江湖寶典】一些江湖術語及常見的名詞解析"
target="_blank"
style="color:#e36c09">【江湖寶典】一些江湖術語及常見的名詞解析a>
頂span>
薦span>
div>
class="r">該寫作素材對 11906span> 個作者有用div>
div>
class="intro">十二經脈指人身手足三陰三陽十二經,包括手陽明、手少陽、手太陽、手太陰、手厥陰、手少陰、足陽明、足少陽、足太陽、足陰、足厥陰、足少陰共十二經脈。十二經脈執行於一身內外,遍布各處,不論是四肢、軀幹、內臟無所…div>
class="tagstime">
class="r">2013.06.08入庫div>
div>
li>
在****中有這樣的**塊,我們需要從中分割出二級**()和title內容。
然後使用beautifulsoup分離出每乙個以上的單獨的**塊:
bsobjhtml=beautifulsoup(htmlr.text);
for titlelist in bsobjhtml.findall("div",):
urltext=titlelist.a["href"];
filename=titlelist.a["title"];
rtext=requests.get(urltext);
bsobjtext=beautifulsoup(rtext.text);
filetext=bsobjtext.find("div",);
接著就是開啟本地檔案,然後儲存內容了:
fp=open(filepath+filename+".txt","w");
fp.write(tool.replace(filetext.__str__()));
當然還有一部重要的內容,也就是tool。因為網頁**會有很多標籤如
,所以儲存之前要刪除掉這些標籤,於是就有了tool:
class tool:
removeimg = re.compile('| |')
removeaddr = re.compile('|
') replaceline = re.compile('|||')
replacetd= re.compile('')
replacepara = re.compile('')
replacebr = re.compile('|')
removeextratag = re.compile('<.*?>')
def replace(self,x):
x = re.sub(self.removeimg,"",x)
x = re.sub(self.removeaddr,"",x)
x = re.sub(self.replaceline,"\n",x)
x = re.sub(self.replacetd,"\t",x)
x = re.sub(self.replacepara,"\n ",x)
x = re.sub(self.replacebr,"\n",x)
x = re.sub(self.removeextratag,"",x)
return x.strip()
下面放上全部**:
"""
created on 2017/12/15
@author: manbu
"""# coding:utf-8
import re
import requests
from bs4 import beautifulsoup
filepath="f:/temp_xiaoshuo/";
class
tool:
removeimg = re.compile('| |')
removeaddr = re.compile('|')
replaceline = re.compile('|||')
replacetd= re.compile('')
replacepara = re.compile('')
replacebr = re.compile('|')
removeextratag = re.compile('<.*?>')
defreplace
(self,x):
x = re.sub(self.removeimg,"",x)
x = re.sub(self.removeaddr,"",x)
x = re.sub(self.replaceline,"\n",x)
x = re.sub(self.replacetd,"\t",x)
x = re.sub(self.replacepara,"\n ",x)
x = re.sub(self.replacebr,"\n",x)
x = re.sub(self.removeextratag,"",x)
return x.strip()
tool=tool()
url="";
htmlr=requests.get(url);
bsobjhtml=beautifulsoup(htmlr.text);
for titlelist in bsobjhtml.findall("div",):
if (titlelist.a != none):
urltext=titlelist.a["href"];
filename=titlelist.a["title"];
fp=open(filepath+filename+".txt","w");
rtext=requests.get(urltext);
bsobjtext=beautifulsoup(rtext.text);
filetext=bsobjtext.find("div",);
fp.write(tool.replace(filetext.__str__()));
fp.close();
總算大功告成,由於第一次接錯python,還有許多不完美的地方,哈哈,不過可以自動化儲存文件的內容是實現了。欣喜。依稀想起一位大神說過的話:懶惰是人類進步的源泉。 小試牛刀之webpack dev server
模組熱替換 用express搭建過乙個小型的伺服器,用過監聽模式來解決手動npm run build的麻煩,這次使用webpack dev server來搭建乙個伺服器,且一併解決 手動編譯 手動重新整理瀏覽器 的麻煩。目錄 詳細 root div body html import from mat...
python 演算法 小試牛刀
1.列印從1到100,碰到3倍數用fizz代替,碰到5倍數,用buzz代替,3和5的倍數,fizzbuzz代替 def func for i in range 1,101 if i 3 0 i 5 0 print fizzbuzz elif i 3 0 print fizz elif i 5 0 p...
Python小試牛刀 迴圈
斐波那契數列,數列前兩項為1,之後每一項都是前兩項之和。usr bin env python3 a,b 0,1 while b 100 print b a,b b,a b預設print輸出結果後會自動換行,如果不希望換行,只做間隔的話,就通過另乙個引數end來替換這個換行符 print a,end ...