#encoding=utf-8 #在進行網頁抓取的時候,分析定位html節點是獲取抓取信息的關鍵,目前我用的是lxml模塊(用來分析XML文檔結構的,當然也能分析html結構), 利用其lxml.html的xpath對html進行分析,獲取抓取信息; #神器XPath的介紹與配置 #首先要說的是XPath數據類型。XPath可分爲四種數據類型: # 節點集(node-set) :節點集是通過路徑匹配返回的符合條件的一組節點的集合。其它類型的數據不能轉換爲節點集。 # 布爾值(boolean) :由函數或布爾表達式返回的條件匹配值,與一般語言中的布爾值相同,有true和false兩個值。布爾值可以和數值類型、字符串類型相互轉換。 # 字符串(string) :字符串即包含一系列字符的集合,XPath中提供了一系列的字符串函數。字符串可與數值類型、布爾值類型的數據相互轉換。 # 數值(number) :在XPath中數值爲浮點數,可以是雙精度64位浮點數。另外包括一些數值的特殊描述,如非數值NaN(Not-a- Number)、正無窮大 infinity、負無窮大-infinity、正負0等等。number的整數值可以通過函數取得,另外,數值也可以和布爾類型、字符串類型相互轉換。 #XPath是一種語言,可以在XML文檔中查找信息,支持HTML,通過元素和屬性進行導航,可以用來提取信息,比正則表達式簡單且強大 # 神器XPath的使用 # 神器XPath的特殊使用 # 神器XPath的特殊用法 # Python並行化介紹與演示 # 實戰--百度貼吧爬蟲 # # import lxml # from lxml import etree # import requests # from requests import get from lxml import etree #定義多行字符串 html = ''' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>測試-常規用法</title> </head> <body> <div id="content"> <ul id="useful"> <li>這是第一條信息</li> <li>這是第二條信息</li> <li>這是第三條信息</li> </ul> <ul id="useless"> <li>不需要的信息1</li> <li>不需要的信息2</li> <li>不需要的信息3</li> </ul> <div id="url"> <a href="http://www.jikexueyuan.com/">極客學院</a> <a href="http://www.jikexueyuan.com/course/?pageNum=1" title="極客學院課程庫">點我打開課程庫</a> </div> </div> </body> </html> ''' selector = etree.HTML(html) # #提取文本 # content = selector.xpath('//ul[@id="useful"]/li/text()') # # content = selector.xpath('//div[@id="content"]/ul[@id="useful"]/li/text()') # # content = selector.xpath('//div/ul[@id="useful"]/li/text()') # for each in content: # print each # # #提取屬性 # # link = selector.xpath('//a/@href') # # # link = selector.xpath('//div[@id="url"]/a/@href') # # for each in link: # # print each # # # title = selector.xpath('//a/@title') # print title[0]
XPath與多線程爬蟲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.