python爬取百度贴吧的实例

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

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

  • 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()

小伙伴试试吧

Python爬取百度贴吧的评论通常涉及网络爬虫技术,可以使用requests库获取网页内容,然后BeautifulSoup或者lxml等解析工具分析HTML结构,提取评论信息。以下是一个简单的步骤概述: 1. **安装所需库**:首先需要安装`requests`, `beautifulsoup4` 和 `lxml` 等库,如果尚未安装,可以使用pip进行安装: ``` pip install requests beautifulsoup4 lxml ``` 2. **发送HTTP请求**:使用`requests.get()`函数获取指定帖子页面的HTML内容。 3. **解析HTML**:通过BeautifulSoup解析HTML文档,找到包含评论的部分,如`.post_content` 或者 `.threadlist` 类的选择器。 4. **提取评论**:遍历每个评论元素,提取评论文本、用户ID或其他相关信息。这可能需要根据具体的HTML结构调整CSS选择器或XPath表达式。 5. **存储数据**:将抓取到的数据保存到CSV、JSON或数据库文件中。 6. **处理反爬策略**:注意检查网站的robots.txt文件以及可能存在的验证码机制,遵守网站的爬虫政策。 下面是一个简化的示例代码片段: ```python import requests from bs4 import BeautifulSoup def get_comments(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') # 查找评论部分并提取 comments_list = soup.select('.comment') # 根据实际HTML结构替换选择器 for comment in comments_list: content = comment.find('div', class_='content').text author = comment.find('a', class_='author').text yield { 'content': content, 'author': author } # 使用示例 url = "https://tieba.baidu.com/p/xxxxx" # 替换为实际的帖子链接 comments = get_comments(url) for i, comment in enumerate(comments, start=1): print(f"评论{i}: {comment['content']} - 作者: {comment['author']}") ``` 请注意,百度贴吧的API可能有使用限制,直接爬取可能会受到反爬措施的影响,建议先查阅官方文档或社区规则。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳小葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值