python爬虫初步之BeautifulSoup实战

本文介绍了使用BeautifulSoup库爬取丁香园论坛回复内容的方法,讲解了BeautifulSoup的Tag、NavigableString等核心概念,并通过示例展示了如何找到并提取特定标签下的内容。通过find函数的用法,可以筛选和处理HTML标签,实现简单的网页抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

爬虫初步之BeautifulSoup实战

**

使用beautifulsoup提取丁香园论坛的回复内容

BeautifulSoup是一个可以将复杂的HTML文档转换成一个复杂的树形结构,每个节点都是python对象,所有对象可以归纳为4种:Tag、NavigableString、BeautifuSoup和Comment。
下面边爬取论坛边介绍每个对象的意义以及方法。
一、用户浏览器访问目标网站并检查目标内容所在标签
目标网址是:

http://www.dxy.cn/bbs/thread/626626

我用Chrome访问的,按F12可看见网站结构及回复内容所在标签如下图:
在这里插入图片描述
Tag 其实就是HTML 中的一个个标签,例如上面的td 、a 等等HTML 标签加上里面包括的内容就是Tag。
二、获取回复内容
我们所需的评论内容就在td class="postbody"标签下,利用BeautifulSoup获取内容

content = data.find("td", class_="postbody").text

同样,我们可以获取用户名和其他信息,就这么简单啦!
主要是BeautifulSoup的用法要掌握。
find函数用法
find(name, attrs, recursive, text, **wargs)    # recursive 递归的,循环的
这些参数相当于过滤器一样可以进行筛选处理。不同的参数过滤可以应用到以下情况:
查找标签,基于name参数
查找文本,基于text参数
基于正则表达式的查找
查找标签的属性,基于attrs参数
基于函数的查找
附源码:

import urllib.request
from bs4 import BeautifulSoup as bs
def main():
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
    }
    url = 'http://www.dxy.cn/bbs/thread/626626'
    request = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(request).read().decode("utf-8")
    html = bs(response, 'lxml')
    getItem(html)
def getItem(html):
    datas = [] # 用来存放获取的用户名和评论
    for data in html.find_all("tbody"):
        try:
            userid = data.find("div", class_="auth").get_text(strip=True)
            print(userid)
            content = data.find("td", class_="postbody").get_text(strip=True)
            print(content)
            datas.append((userid,content))
        except:
            pass
    print(datas)



if __name__ == '__main__':
    main()

最后的输出如下图:
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值