被写文件坑了一晚上,因为自己写了writeFile(),但是调用的是WriteFile()刚好python里面有WriteFile()所以刚好不报错!!!!!
#_*_ coding: utf-8 _*_ ''' Created on 2018 7月12号 @author: sss 类型:get请求 功能:爬取百度贴吧的页面,可以分页 ''' from pip._vendor.distlib.compat import raw_input import urllib import urllib.parse import urllib.request from tokenize import endpats from fileinput import filename from _winapi import WriteFile from ctypes.wintypes import PINT def loadPage(url, filename): """ 作用:根据url发送请求,获取服务器相应的文件 url: 需要爬取得url地址 filename: 文件名 """ print('正在下载' + filename) headers = {'User-Agent': "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} request = urllib.request.Request(url, headers = headers) response = urllib.request.urlopen(request ) return response.read() def WriteFile(html, filename): #python里面自带WriteFile所以注意自己调用的是谁写的,调用自己的是否函数名一致了 """ 作用:保存服务器响应文件到本地磁盘文件 html:服务器相应文件 filename: 本地磁盘文件名 """ with open(filename, 'wb+') as f: f.write(html) # f = open(filename, 'wb+') # f.write(html) # f.close print('已写入:' + filename) def tiebaSpider(url, beginPage, endPage): """ 作用:负责处理url,分配每个url去发送请求 url: 需要处理的第一个url beginPage: 爬虫执行的其实页面 endPage: 爬虫执行的截止页面 """ for page in range(beginPage, endPage + 1): pn = (page - 1) * 50 filename = '第' + str(page) + '页.html' #组合完整的url,并且pn每次增加50 fullurl = url + "&pn=" + str(pn) print(fullurl) #调用loadPage()发送请求获取html页面 html = loadPage(fullurl, filename) #将获得的html页面写入本地磁盘文件 WriteFile(html, filename) print('完成!') if __name__ == "__main__": kw = raw_input("请输入需要爬取的贴吧") #输入起始页和终止页,str转为int类型 beginPage = int(raw_input('请输入起始页')) endPage = int(raw_input('请输入终止页')) url = "http://tieba.baidu.com/f?" key = urllib.parse.urlencode({"kw": kw}) #组合后的url示例:http://tieba.baidu.com/f?kw=lol url = url + key tiebaSpider(url, beginPage, endPage)