使用lxml代替beautifulsoup
深入使用過lxml的都會深深地喜歡上它,雖然BeautifulSoup很流行,但是深入了解lxml后,你就再也不會使用bs了
我覺得beautifulsoup不好用,速度也慢(雖然可以使用lxml作為解析器了).另外soup.find_all這種簡直就是手工時(shí)代的操作(很多人使用find find_all這幾個(gè)函數(shù), 其實(shí)它們使用起來不是很愉快),手工操作的另一個(gè)特征是需要自己手寫正則表達(dá)式(正則是一個(gè)小范圍內(nèi)的軍刀,大范圍用是不對的)
多使用soup.select才是正確的選擇, 多簡單方便.
爬蟲對html頁面做的操作,大部分時(shí)候在選取東西,find_all還要自己手工去寫(比如手工寫正則表達(dá)式, it's a hell).
使用XPath以及CSS選擇器才是明智的選擇,這兩者,瀏覽器都可以幫我們自動生成,何樂不為?
另外,lxml用起來舒服多了,速度也不錯(cuò).
另外,lxml安裝是一個(gè)難題,常有很多錯(cuò)誤,令人望而生畏,這里提供兩種方法
Windows平臺: 使用Anaconda集成安裝包,無腦解決
Ubuntu平臺: sudo apt-get install python-lxml無腦解決
我從不覺得去自己解決lxml在這些平臺的安裝有什么很大價(jià)值,反而容易令人自我懷疑.(寶貴的時(shí)間為何要浪費(fèi)在這種事情上面?)
下面就來一個(gè)示例:
##################### # 獲取SF首頁的標(biāo)題 ##################### from lxml.etree import HTML import requestsurl = 'https://segmentfault.com/' css_selector = '.title>a' #這是利用瀏覽器自動獲取的,我甚至都不用知道它是什么意思text = requests.get(url).text page = HTML(text)titles = [] for title in page.cssselect(css_selector):titles.append(title.text)print titles# 這一段程序?qū)懴聛?不用動腦筋(無腦寫),不消耗心智 利用瀏覽器獲取XPath/CSS選擇器的方法: 1. 推薦使用Firefox, 比Chrome強(qiáng)大太多 2. 右鍵元素-->copy XPath總結(jié)
以上是生活随笔為你收集整理的使用lxml代替beautifulsoup的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 易创互联 php,易创网站管理系统(DI
- 下一篇: jwt用户注销 PHP,flask_jw