首先要解決的就是不一樣的題目在不一樣的頁上,也就是要實現翻頁功能,自動獲取所要爬取的地址,經過分析能夠得出不一樣的頁面也就是volume=後面的數字不一樣正則表達式
因此咱們能夠用re模塊來替換便可:app
new_url = re.sub('(\d+)', '%s' %i, url)
獲得全部URL後就很簡單了,寫個正則表達式來匹配便可。url
1 from urllib import request 2 import re 3 4 def get_page_list(url, total_page): 5 page_list = [] 6 for i in range(1, total_page): 7 new_url = re.sub('(\d+)', '%s' %i, url) 8 page_list.append(new_url) 9 return page_list 10 11 if __name__ == '__main__': 12 f = open('in.txt','a') 13 url = 'http://poj.org/problemlist?volume=1' 14 15 page_list = get_page_list(url, 3) 16 for page in page_list: 17 text = request.urlopen(page).read().decode() 18 s = re.compile(r'href=problem\?(.*?)</a>') 19 problem_list = re.findall(s, text) 20 for problem in problem_list: 21 f.writelines(problem+'\n') 22 f.close()