python爬取百度贴吧的实例
程序员文章站
2024-01-03 11:36:04
...
今天学习爬虫第二天,我们来试试爬取百度贴吧。
我先说下一下我主要步骤:
- 1.首先要获取url
- 2.然后遍历url 获得网页响应
- 3.把爬取的html以文本的形式保存在本地
大家先看看百度贴吧(lol吧)
看了一些贴吧后 发现贴吧名字都是 “XXX”+吧 然后看看网址
第一页
第二页
第三页
三页之后 直接找出url的规律,kw=" " 传递xxx吧 ,pn负责翻页,翻一次 ,加50,从0开始。好接下来就可以开始了。
面向对象方法 类 tbspider
启动程序
我们看看效果
文件里面的内容
成功获取到了html编码 最后附上源码:
import requests
class tbspider:
def init(self, tbname):
# 将tbname实例化让其在后面的函数save_file中传递self.tbname
self.tbname = tbname
# url的规律 kw的参数用tbname传递,而翻页的pn值 用{}代替 以便后续用.format传递
self.url = “https://tieba.baidu.com/f?kw=” + tbname + “&ie=utf-8&pn={}”
def get_url(self): # 1.首先要获取url
# 定义一个空的列表
url_list = list()
# 在列表中加入一组数 每次加50
for i in range(200):
url_list.append(self.url.format(i * 50))
return url_list
def pass_url(self, url): # 获得网页响应
# linux的响应头 网页里直接复制过来
headers = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
response = requests.get(url, headers)
# 返回url的html编码
return response.content
def save_file(self, html_str, pag_num): # 保存文件的函数
# 在我的/home/python/Desktop/tbspider路径下的文件夹中存储每一页的html编码 并给他们命名
file_name = "/home/python/Desktop/tbspider/{}吧第{}页.html".format(self.tbname, pag_num)
with open(file_name, "wb", ) as f:
f.write(html_str)
def run(self): # 定义一个主函数主要干的事情 把上面的函数连接起来
url_list = self.get_url()
for url in url_list: # 然后遍历url
html_str = self.pass_url(url)
pag_num = url_list.index(url) + 1
self.save_file(html_str, pag_num)
if name == “main”: # 程序入口
urlname = tbspider(“lol”) # 这里的“lol”可以随便更改成你想要的贴吧
urlname.run()