python爬虫训练——爬poj题目

首先要解决的就是不同的题目在不同的页上,也就是要实现翻页功能,自动获取所要爬取的地址,通过分析可以得出不同的页面也就是volume=后面的数字不同

所以我们可以用re模块来替换即可:

new_url = re.sub('(\d+)', '%s' %i, 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()

 

posted @ 2018-01-24 09:59  Kayden_Cheung  阅读(751)  评论(0)    收藏  举报
//目录