Python bs4 库的学习

对于bs4这个库,在学习爬虫的上面还是很重要的,有很多功能额是很有用的:

#bs4 提取HTML标签内容
from bs5 import BeautifulSoup as bs
text= '''
<html>
<head>
    <meta = charset='UTF-8' >
    <title id =1 href = 'http://example.com/elsie' class = 'title'>Test</title>

</head>
<body>
   <div id = 'ok'>
       <div class = 'nice'>
           <p class = 'p'>
               Hello World
           </p>
            <p class = 'e'>
               风一般的男人
           </p>
       </div>
   </div>
</body> 
</html>
'''
soup = bs(text,'html.parser')
print(soup.title.text)#text获取文本内容
print(soup.title.attrs)#获取属性
print(soup.title.attrs['class'])#返回键值为class的值
print(soup.title.get('class'))
#find找到一条标签 find_all找到所有同类标签
print(soup.find('p').text.lstrip())
print(soup.find_all('p'))
for i in soup.find_all('p'):
    print(i.text.lstrip())
soup.find('p',class_='e').text
#输出找到的‘p'字符中类名为e的文本内容
#css选择器,有讲究
print(soup.select('title'))
print(soup.select('.nice'))
print(soup.select('#ok'))

然后就是进阶了,从贴吧上的一个帖子来进行爬取,思路是这样的:
在这里插入图片描述

from bs4 import BeautifulSoup as bs
#导入bs4库,切记文件名不能和导入库重合,否则会循环导入
import requests
#导入requests库
html=requests.get('http://tieba.baidu.com/p/6832029659')
#定位到网页
soup=bs(html.text,'html.parser')
#爬取网页
images = soup.find_all('img',class_='BDE_Image')
#通过检查元素,将本贴内的全部照片爬取
for img in images:
    print('*'*100)

在这里插入图片描述
爬取成功的结果就是桌面多了很多图片。。。
那我们要是再进一步呢?我们爬取评论和相关的评论信息,再导入数据库怎么样?
搞起!

from bs4 import BeautifulSoup as bs
import requests
from pymongo import MongoClient
#导入库并且链接mongo
conn=MongoClient('',27017)
#抱歉为了隐私省去ip地址
print(conn)
db=conn['Ikun']
my_set=db['lwk1101_set']
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362'
}
#headers重要性来了,确定接口
def get_comment(MovieID,page):
#这里我们定义一个函数,这个函数要实现的功能就是爬取昵称,时间,评级和评论
    page=(page-1)*10
    #这里解释一下,主要是通过对元素的分析发现每一部电影会对应一个相应的ID,评论页的计算方式就如上所示,如实还原
    url='https://movie.douban.com/subject/%s/comments?start=%d&limit=20&sort=new_score&status=P'%(MovieID,page)
    html=requests.get(url=url,headers=headers)
    #确定地址,连接端口
    soup=bs(html.text,'html.parser')
    #爬取界面所有文本内容
    boxes=soup.find_all('div',class_='comment-item')
    #找到所有的同类标签项
    star=0
    #先定义一个star变量,为了后面好使用
    for box in boxes:
        print('$'*100)
        nickname = box.find('span',class_='comment-info').a.text
        #爬取昵称
        print(nickname)
        #输出昵称
        comment = box.find('span',class_='short').text
        #爬取评论
        print(comment)
        time = box.find('span',class_='comment-time').attrs['title']
        #返回对应标签内容
        
        print(time)
        try:
            star=int(box.find('span',class_='rating').attrs['class'][0].split('allstar')[1])//10
            #这里我们发现他的书写方式是AllstarXX rating
            #XX对应的是评星*10,但是我们要抓取这个评星就要对整个内容进行切割
            #先抓取rating类下的所有内容,然后返回class标签下的内容
            #将一个字符串化为一个输入型然后切割
            #得到想要的数字,进行取商
            #这里选择.attrs['class'][0],因为‘allstar’是一整个字符串,下面的那个评论时间如果取第一个就是第一个数字
            print(star)
        except:
            pass
        my_set.insert_one({'name':nickname, 'time': time,'comment':comment,'star':star})
        #对MongoDB进行数据输入
        print("Congratulations!")

for i in range(1,11):
#这里我们取十页的评论
    print(get_comment('30328825',i))
    #调用函数,确定想要爬取的电影对应的编号

在这里插入图片描述
不难发现这个div class='comment-item’对应的就是整个评论部分

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Python爬虫,使用BeautifulSoup (通常简写为bs4)是一个常见的选择。BeautifulSoup是一个解析HTML和XML文档的Python,它提供了简单又灵活的方式来遍历和搜索文档树。 要使用BeautifulSoup,您需要在Python环境中安装该。可以使用pip命令来安装: ``` pip install beautifulsoup4 ``` 安装完成后,您可以开始编写爬虫代码。首先,您需要导入BeautifulSoup模块和相应的,例如requests用于发送HTTP请求: ```python from bs4 import BeautifulSoup import requests ``` 然后,您可以使用requests发送HTTP请求获取页面内容,并将其传递给BeautifulSoup进行解析: ```python url = 'https://www.example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') ``` 在这个例子中,我们使用requests发送GET请求来获取https://www.example.com网页的内容。然后,我们将返回的内容传递给BeautifulSoup构造函数进行解析,并指定解析器为'html.parser'。 接下来,您可以使用BeautifulSoup提供的方法来遍历和搜索文档树,以提取所需的数据。例如,您可以使用find()或find_all()方法来查找特定的元素或标签: ```python # 查找第一个<div>标签 tag = soup.find('div') # 查找所有<a>标签 tags = soup.find_all('a') ``` 这只是Python爬虫使用BeautifulSoup的基本操作示例。您可以根据需要进一步学习和探索BeautifulSoup的功能以及其他相关。 希望这能帮到您!如果您有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值