ulrlib案例-爬取百度贴吧

Posted doitjust

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ulrlib案例-爬取百度贴吧相关的知识,希望对你有一定的参考价值。

1.任务需求

百度贴吧有很多主题,每个主题下的网页存在很多分页。爬取不同的主题,并下载每个主题下的多页网页。

输入贴吧名称,下载相应贴吧的多页网页,设置最多下载50页。

2.分析网页

访问不同的百度贴吧时。尝试搜索多个贴吧,观察到浏览器的url中的kw为贴吧的名称。

因此,发送get请求时,设置不同的kw可以访问不同的贴吧。

同一主题的贴吧中,有分页,通过点击不同的分页,可以看出,url中的pn规律变化

  第1页 pn = 0

  第2页 pn=50

  第3页 pn=100

据此规律可以爬取不同页数的网页。

3.代码实现

 1 from urllib import request,parse
 2 import time
 3 import random
 4 import os
 5 
 6 kw = input(请输入贴吧名称:)
 7 start = input(请输入起始页:)
 8 end = input(请输入结束页:)
 9 
10 # 构建请求字符串
11 qs = {
12   kw:kw
13 }
14 qs = parse.urlencode(qs)
15 
16 # 构建贴吧链接地址
17 base_url = https://tieba.baidu.com/f? + qs
18 
19 start = (int(start) - 1) * 50
20 end = (int(end) - 1) * 50 + 1
21 
22 for pn in range(start,end,50):
23   # pn 分页数字
24   # 文件名
25   fname = str((pn//50 + 1)) + .html
26   fullurl = base_url + &pn= + str(pn)
27   print(fullurl)
28   response = request.urlopen(fullurl)
29   data = response.read().decode(utf-8)
30 
31   # 自动创建目录
32   path = ./tieba/ + kw
33   if not os.path.exists(path):
34   os.makedirs(path)
35 
36   with open(os.path.join(path,fname),w,encoding=utf-8) as f:
37     f.write(data)
38 
39   # 加入请求间隔
40   time.sleep(random.random() * 2)

4.注意事项

后面的加入随机请求间隔,防止请求过于频繁导致被封IP。

 

以上是关于ulrlib案例-爬取百度贴吧的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫实战之如何爬取百度贴吧帖子?案例详解

网络爬虫入门——案例一:爬取百度贴吧帖子

最最简单的python爬虫教程--爬取百度百科案例

最最简单的python爬虫教程--爬取百度百科案例

求求大佬救救孩子吧。按照书上敲的python爬取百度网盘权利的游戏案例,结果报错,其他都不报错,生成的txt文件也没有内容

Python如何爬取百度图片?