python爬蟲訓練——爬poj題目

首先要解決的就是不一樣的題目在不一樣的頁上,也就是要實現翻頁功能,自動獲取所要爬取的地址,經過分析能夠得出不一樣的頁面也就是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()

相關文章
相關標籤/搜索