閒來無事研究了一下python的爬蟲技術,現在總結一下
testclass.py 檔案
#加上這個可以輸入中文
# -*- coding:utf-8 -*-
#匯入幾個內建庫
import urllib;
import urllib2;
import re;
import mytool;
#模擬瀏覽器和請求頭,否則顯示訪問出錯
user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)';
headers = ;
#對於class的使用還不了解
class spider:
def __init__(self):
#預設**
self.url = "";
#lowb english
self.tool = mytool.myzhengze();
def gethtml(self,url):
request = urllib2.request(url,headers=headers);
response = urllib2.urlopen(request);
#此處更改**編碼方式,有的是gbk的,可以檢視網頁源**的meta charset屬性
return response.read().decode('utf-8');
#得到**取出文字並寫入檔案
def getinfo(self,html):
#初步取出
#正規表示式解釋: *匹配1個除\n外的字元,*匹配前乙個字元0次貨無數次,?匹配前乙個字元0次或一次,也就是結束匹配
iden = '.*?
'; temp = re.compile(iden,re.s);
result = re.findall(temp,html);
for item in result:
middle = self.tool.myreplace(item);
hahah = self.tool.writetofile('端午節快樂.txt',middle);
print middle;
return result;
def getpic(self,html):
idenpic = '
temppic = re.compile(idenpic,re.s);
result = re.findall(temppic,html);
x = 0;
for item in result:
removesome = re.compile('
mytool.py 檔案
# -*- coding:utf-8 -*-
import re;
import sys;
reload(sys);
sys.setdefaultencoding('utf-8');
class myzhengze:
removeqiubai = re.compile('');
removediv = re.compile('|
') removebr = re.compile('
'); def __init__(self):
return none;
def myreplace(self,x):
x = re.sub(self.removeqiubai,"",x);
x = re.sub(self.removediv,"",x);
x = re.sub(self.removebr,'',x);
return x.strip();
def writetofile(self,filename,txt):
# 'w'是覆蓋模式 'a'是追加格式
f = open(filename,'a');
f.write(txt);
f.write('\n')
f.close();
參考:
**位址
明天端午了,祝大家端午快樂(也就我自己了..).近半年沒回過家今天晚上回去,想到回來之後跟高中上課般加班便頭痛不已,還是先享受下三天的假期吧.
python爬蟲初探
確保程式引用類庫是否是引用的該目錄,否則會出現pip install chardet 後,無法在專案中呼叫chardet的問題.可能在會出現pip安裝到 usr local lib python2.7 dist packages下,但是程式在 usr local lib python2.7 dist...
Python爬蟲初探
以下功能均在jupyter notebook上實現。python及相應爬蟲工具安裝請參考部落格 一 爬蟲介紹 1.非結構化資料 沒有固定格式 如網頁資料,必須通過etl extract 抽取 transformation 轉換 loading 組成 工具將數 據轉化為結構化資料才能取用。raw da...
Python爬蟲 初探多執行緒爬蟲
上篇,我們已經建立了乙個基本的爬蟲,用來抓取動態網頁的資訊。經過測試,爬蟲的速度太慢,我們需要改進。這篇我會介紹如何實現乙個多執行緒的python爬蟲來提高抓取網頁的效率。很多人都說因為python的gil gil規定每個時刻只能有乙個執行緒訪問python虛擬機器 限制,不應該用多執行緒,而應該用...