首先要解决的就是不一样的题目在不一样的页上,也就是要实现翻页功能,自动获取所要爬取的地址,经过分析能够得出不一样的页面也就是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()