SEO工具箱:BeautifulSoup抓取列表頁錨文本

素聞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唄,沒這句容易出錯
相關文章
相關標籤/搜索