(一)中主要內容:
python3中:urllib.request.urlopen()開啟指定url;
urllib.parse.uelencode()對普通字串轉成符合url的字串
urlencode()編碼:對字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進製制數,空格則編碼為加號(+)。
urldecode()解碼:還原 url 編碼字串。
爬蟲是如何工作的。
看首頁所有鏈結裡的內容,然後爬到了工大要聞這乙個鏈結上面,已經完成了兩頁面的爬取,通過(一)方法分析url資料,即可提取有效內容。接下來,有乙個返回首頁的鏈結,是不用爬回去的,因為已經看過了這個鏈結。所以,要存下已經看過的鏈結,這樣,滅此看到乙個可能需要爬的新鏈結,就先看看存下的鏈結有沒有重複的,如果有,那就不用去爬了。理論上,如果所有的頁面都能爬到。在python裡,用偽**這樣實現。
importqueue
url_queue= queue.queue()
seen =set()
start_page= ''
seen.insert(start_page)
url_queue.put(start_page)
while(true):
if url_queue.size()>0:
current_url = url_queue.get() #取出佇列裡面第乙個url
store(current_url) #儲存url網頁
for next_url in extract_urls(current_url):
#extract_urls(current_url)是指頁面t中所有url的集合, current_url是這個集合中的乙個元素
if next_url not in seen:
seen.put(next_url)
url.queue(next_url)
else:
break
例項**:
# -*-coding: utf-8 -*-
importurllib.request
importurllib
fromcollections import deque
importre
q =deque()
s =set()
start_url= ''
data =urllib.request.urlopen(start_url).read().decode('utf-8')
r =re.compile(r'target.+?href="(.+?)"')
fori_url in r.findall(data):
s.add(i_url)
if i_url not in s:
print(s)
總結:這次主要是爬蟲的工作原理,以及set,deque的基本操作,最重要的是有關正規表示式的了解。
最短時間(Dijistra)
時間限制 500ms 記憶體限制 100m 最短時間 描述 夢工廠有 n 個分廠 從 1 開始編號 有m對分廠通過雙向鐵路相連。為了保證每兩個分廠之間的同學可以方便地進行交流,掌舵人張老師就在那些沒有鐵路連線的分廠之間建造了公路。在兩個直接通過公路或鐵路相連的分廠之間移動,需要花費 1 小時。現在菜...
最短時間過橋問題
問題如下 四個女人過橋,夜間有一火把,每次最多過兩個,必需帶火把,過橋速度不一樣,分別為 兩個人過用最慢乙個的速度,火把不能扔,如何在17min內四個女人都過橋?這個問題其實園子裡已經有解決方案了 也討論了多次 不過呢 很多只有思路 原始碼也不夠詳細 於是 我再演繹一下 歸納總結一下 其實是很簡單的...
最短路 dijkstra求最短時間)
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...