Python3爬取百度贴吧网页

第一次写博客,记录自己学习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()

最后,运行代码,输入要爬取的内容:

简单的爬取贴吧网页就结束了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值