用函式將**優化
將**劃分為三個函式(模組),第乙個函式請求根路徑
第二個函式,請求二級頁面,遍歷出大學的詳細資訊
第三個函式,主函式,控制整個程式的執行,
在主函式裡,先獲取請求頁面的路徑,然後link出一級頁面,最後,把這個一級頁面的路徑用parse_university迴圈出他的子資訊。
需要注意的是,不能把路徑直接傳入fetch函式,因為在主函式裡,每一次迴圈二級頁面都需要訪問一級頁面,重新遍歷一級頁面fetch函式的值
import lxml.etree
import requests
start_url= '世界大學排名'
deffetch
(url):
start_url = '世界大學排名'
r = requests.get(url)
# 伺服器出錯資訊
r.raise_for_status()
r.encoding='utf-8'
return r.text
# 負責將每乙個大學的子資訊都遍歷出來(二級遍歷)
defparse_university
(html):
selector = lxml.etree.html(html)
title = selector.xpath('//*[@id="wikicontent"]/h1/text()')[0]
infobox = selector.xpath('//div[@class="infobox"]')[0]
# p//text()雙斜槓,表示把隱藏的也顯示出來
keys = infobox.xpath('./table//tr/td[1]/p//text()')
cols = infobox.xpath('./table//tr/td[2]')
# 把values的內容便利出來,用空格鏈結起來
values = [''.join(col.xpath('.//text()')) for col in cols]
info =
for name, properties in info.items():
print(name)
for k, v in properties.items():
print('%s:%s' % (k, v))
print('-' * 30)
if __name__ == '__main__':
# 獲取請求頁面的路徑
selector = lxml.etree.html(fetch(start_url))
# 獲取一級頁面的內容(標籤)
links = selector.xpath('//*[@id="content"]/table/tbody/tr/td/a/@href')
# 遍歷二級頁面,將需要的每一條大學資料遍歷出來(一級遍歷)
for link in links:
parse_university(fetch(link))
2.1 按順序排列字典是無序的,實現按順序排列,將字典換成列表就行了1. 在二級頁面迴圈的時候,每次都先把標題(這裡是大學名)列印出來
2. 迴圈大學資訊的時候,直接用列表的形式迴圈出keys和values
def
parse_university
(html):
selector = lxml.etree.html(html)
title = selector.xpath('//*[@id="wikicontent"]/h1/text()')[0]
# 列印大學名
print(title)
infobox = selector.xpath('//div[@class="infobox"]')[0]
keys = infobox.xpath('./table//tr/td[1]/p//text()')
cols = infobox.xpath('./table//tr/td[2]')
values = [''.join(col.xpath('.//text()')) for col in cols]
# 用列表的形式迴圈出keys, values
for k, v in zip(keys, values):
print('%s:%s'%(k, v))
print('-' * 30)
用lxml跑乙個簡單的流程 3 0版本
多程序抓取頁面 匯入第三方thread包,定義乙個程序池 將抓取的一級頁面放進程式池裡 啟動程序池,自定義用幾個程序來執行函式 在程序池中引入函式,定義download函式,執行二級抓取資料 退出執行緒 import 先導入內建的庫,再匯入第三方庫 import time import thread...
設計 乙個簡單的 流程引擎
專案原因 之前參與過一些 工作流 的專案,都是基於 某些 機構現有的 工作流引擎。專案進行中,最鬧心的 莫過於 業務 和 流程 的 混淆一起。見過的工作流是怎樣的 首先乙個基於 silverlight 的 流程ui設計器 通過設計器 得到乙個 流程xml 和 布局json 兩個檔案 布局json檔案...
跑乙個 OpenVINO 的 demo
上週在公司聽了 intel 的代表來介紹他們的 ai 晶元,spring hill nnp i 1000 關於這個晶元的資料,具體可以看看這個下面的 ppt。因為 gpu 資源太緊缺了,而線上部署的模型,考慮到算力和延時等因素,都不會太複雜,所以實際場景下做推斷,還是大量的 cpu 為主的。鑑於 i...