python爬虫
最近在学习python爬虫,然后练手自己写了一个简单的爬虫,爬取了一下百度贴吧的内容,但是遇到一个问题,贴吧的内容能拿到,也能打印出来,但是在写入文件的时候只能写一个网页头。希望大牛指导一下是什么原因导致的写文件失败(代码没有报错),源代码如下:from urllib import requestfrom urllib import parse
#爬取指定的百度贴吧内容
#分析爬取对象的url特性
#https://tieba.baidu.com/f?kw=%CD%C2%B2%DB&fr=ala0&tpl=5第一页,经测试https://tieba.baidu.com/f?kw=吐槽&ie=utf-8&pn=0也可以访问第一页,故url中pn的值为(1-1)*50
#https://tieba.baidu.com/f?kw=吐槽&ie=utf-8&pn=50 第二页,(2-1)*50
#https://tieba.baidu.com/f?kw=吐槽&ie=utf-8&pn=100 第三页,(3-1)*50
#https://tieba.baidu.com/f?kw=吐槽&ie=utf-8&pn=150 第四页,(4-1)*50
# base_url="https://tieba.baidu.com/f?"
header = {
"user-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"
}
#发送请求,获取数据
def loadpage(url,filename):
print("正在下载:",filename)
req = request.Request(url,headers=header)
resp = request.urlopen(req).read()
print(type(resp))
# print("以下是下载的内容:",resp.decode())
return resp
#将请求的数据写入本地
def writepage(html,filename):
print("正在保存:",filename)
# f = open(filename,"wb")
# f.write(html)
# f.close()
with open(filename,"w",encoding='utf-8')as f:
f.write(html)
print("----------------")
#构造要爬取的url等数据
def tiebaSpider(url,beginpage,endpage):
#构造url
for page in range(beginpage,endpage+1):
pn = (page-1)*50#计算url中pn的值
fullurl = url+"&pn="+str(pn) #构造完整的url
print(fullurl)
filename = r"/Users/fengcheng/Documents/第" + str(page) + "页.html"
# 获取要爬取的数据
html = loadpage(fullurl, filename)
# 将爬取到的数据写到本地
writepage(html, filename)
print("谢谢使用!")
if __name__ == '__main__':
key = input("请输入要爬取的贴吧名:")
beginpage = int(input("请输入起始页:"))
endpage = int(input("请输入结束页:"))
kw = {"kw":key}#贴吧名
kw = parse.urlencode(kw)
#构造url
base_url = "http://tieba.baidu.com/f?"+kw
tiebaSpider(base_url,beginpage,endpage)
# sleep(10)
居然都没人回答一下{:10_247:}
页:
[1]