欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬取百度贴吧的实例

程序员文章站 2024-01-03 11:36:04
...

今天学习爬虫第二天,我们来试试爬取百度贴吧。

我先说下一下我主要步骤:

  • 1.首先要获取url
  • 2.然后遍历url 获得网页响应
  • 3.把爬取的html以文本的形式保存在本地

大家先看看百度贴吧(lol吧)

python爬取百度贴吧的实例
看了一些贴吧后 发现贴吧名字都是 “XXX”+吧 然后看看网址

第一页

python爬取百度贴吧的实例

第二页

python爬取百度贴吧的实例

第三页

python爬取百度贴吧的实例

三页之后 直接找出url的规律,kw=" " 传递xxx吧 ,pn负责翻页,翻一次 ,加50,从0开始。好接下来就可以开始了。

面向对象方法 类 tbspider

python爬取百度贴吧的实例

启动程序

python爬取百度贴吧的实例

我们看看效果

python爬取百度贴吧的实例

文件里面的内容

python爬取百度贴吧的实例
成功获取到了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()

小伙伴试试吧

上一篇:

下一篇: