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()

相关文章
相关标签/搜索