URL分析
百度贴吧网页地址:
第1页:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0
第2页:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50
第3页:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100
根据url可看出,每1页的url只是修改了pn值,其余部分并未修改。而且,每增加1页,pn的值增加50。
代码
Python版本:2.7.10
#coding=utf-8
import urllib2
#
"""
tiebaSpider(url,beginpage,endpage):
负责处理url,分配每个url去发送请求
url:需要处理的第一个url
beginPage: 爬虫执行的起始页面
endPage: 爬虫执行的截止页面
"""
#
def tiebaSpider(url,beginpage,endpage):
for page in range(beginpage,endpage+1):
# 根据url分析,找出计算公式
pn=(page-1)*50
# 输出文件名
filename = str(page) + "page.html"
# 每1页对应的的url
fullurl = url + "&pn="+ str(pn)
print page,"页的网址为:",fullurl
# 调用loadPage方法,开始爬取数据
html = loadPage(fullurl,filename)
# 将爬取到的html页面进行存储
writeFile(html,filename)
# 爬取数据方法
def loadPage(url,filename):
print "正在下载:"+filename
# 设置User-Agent头,伪装成一个被公认的浏览器
header = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
request = urllib2.Request(url,headers=header)
response = urllib2.urlopen(request)
return response.read()
# 存储数据方法
def writeFile(html,filename):
print "正在存储:"+filename
# 存储路径 + 存储文件名
fname = "E:/pythonTest/"+filename
# 开始存储
with open(fname,"w") as f:
f.write(html)
print "------下载存储完成!!!------"
if __name__ == '__main__':
# headurl = "https://tieba.baidu.com/f?kw=lol"
headurl = raw_input("请输入需要爬取的贴吧:")
beginPage = int(raw_input("请输入起始页:"))
endPage = int(raw_input("请输入终止页:"))
tiebaSpider(headurl,beginPage,endPage)
运行