素聞BeautifulSoup提取效率低,艾瑪,第一印象果真是很要命的,反正比Re 和 Lxml 是要慢的,不過就無奈Re的正則折騰來折騰去,沒寫出來,Lxml 的 Xpath 又用得很差。html
不過就這三個模版來看,BeautifulSoup的表現仍是不錯的,夠簡單,順便測試了一下時間,抓10個列表頁花不了1分鐘,固然我是菜鳥,沒事不會糾結終結速度。json
核心就是這部分,用 Find_all 和 Find 都搞了半天不成功,最後用CSS提取搞定,也怪我太着急。curl
用Find比較麻煩,一層層的Class找,屢次索引效率確定不能保證測試
用Urllib2 或者 Pycurl 抓均可以編碼
key_list = open('title.txt','a+') for page in xrange(0,101): #要抓的列表數量 url = 'http://www.xxx.net/wangwen/list_205_%s.html' % page soup = bs(gethtml(url,headers),"lxml") for i in soup.select('.thread_list a'): #這句是核心,CSS組合查找,找到.thread_list 下的 a 標籤 i = i.text.encode('utf-8') #提取a標籤內的文筆內容,也就是錨文本 <a href="http://aaa.com">我是錨文本</a> 此時代碼編譯爲utf-8 key_list.write(i + '\n') print i,ctime() #裝B的寫了ctime看時間,其實沒啥米鳥用 time.sleep(3) key_list.close()
import pycurl,StringIO,json,time,re,sys from time import ctime from lxml import etree from bs4 import BeautifulSoup as bs reload(sys) sys.setdefaultencoding('utf-8') #設定系統默認編碼,Windows設置gbk唄,沒這句容易出錯