第一次写博客,记录自己学习python爬虫的经历以及遇到的坑,接下来从最简单的下载网页开始。
python版本:3.6.3
IDE:PyCharm
可以看到kw后面跟着的是贴吧的名字,所以我们拿到的url就是url = "http://tieba.baidu.com/f?"
,kw的值可以在程序中输入我们想要爬取的贴吧名字,pn的值在这里代表的应该是跳过的帖子数,每页50个,可以帮助我们计算从第几页爬到第几页。接下来开始写代码了:
# 因为是python3 所以我们这里需要导入urllib下的 parse 和 request
# 在python2 中导入的应该是 urllib 和 urllib2
# parse -->用来对贴吗名字进行url编码
# request -->用来发送请求,获取服务器响应内容
from urllib import parse
from urllib import request
先输入我们需要爬的贴吧名称和起始页,结束页
kw = input("贴吧名字:")
beginPage = int(input("起始页:"))
endPage = int(input("结束页:"))
输入完成后,对kw进行url编码 参数是一个字典类型
url = url + parse.urlencode({"kw": kw})
利用for循环 创建html文件并计算每页的pn值,并追加到url的后面,因为这里不是汉字,所以不需要进行编码,直接拼接:
for page in range(beginPage, endPage +1):
fileName = kw + "吧---第" + str(page) + "页.html"
pn = (page - 1) * 50
t_url = url + "&pn=" + str(pn)
print(t_url)
downLoadPage(fileName, t_url)
实现downLoadPage函数:
def downLoadPage(fileName, url):
print("正在下载%s" % fileName)
# 向拼接好的url发送请求 拿到服务器相应内容
mRequest = request.Request(url)
mResponse = request.urlopen(mRequest)
# 因为拿到内容是二进制格式,所以这里用二进制写入方式打开文件
f_write = open(fileName, "wb")
try:
# mResponse.read()方法在这里只能调用一次
f_write.write(mResponse.read())
except Exception as ex:
print("%s" % ex)
finally:
f_write.close()
最后,运行代码,输入要爬取的内容:
简单的爬取贴吧网页就结束了。