python爬虫_bs4(BeautifulSoup4)+find/find_all的Tag综合使用实例

bs4库的目的是解析resquest的text数据

import requests
# 引入BS库,下面的bs4就是beautifulsoup4
from bs4 import BeautifulSoup
url=
res = requests.get(url)
# 把网页解析为BeautifulSoup对象
soup = BeautifulSoup(res.text,'html.parser')
#soup是网页的源码

soup有两类方法find()与find_all()以及Tag对象
Tag什么要搞清楚
Tag一定不是数组,Tag一定不是数组,Tag一定不是数组

方法作用
Tag.find()或Tag,fingd_all()提取Tag中的Tag
Tag.text提取Tag中的文字
Tag[‘姓名’]输入参数:属性名,可以提取Tag中这个属性的值
item = soup.find('div') #使用find()方法提取首个<div>元素,并放到变量item里。
items = soup.find_all('div')#用find_all()把所有符合要求的数据提取出来,并放在变量items里
#Tag对象只有find_all方法之后才能用
for item in items:           # 遍历列表items
    kind = item.find('h2')   # 在列表中的每个元素里,匹配标签<h2>提取出数据
    title = item.find(class_='title')  #  在列表中的每个元素里,匹配属性class_='title'提取出数据
    brief = item.find(class_='info') # 在列表中的每个元素里,匹配属性class_='info'提取出数据
    print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text) # 打印书籍的类型、名字、链接和简介的文字
    

补充资料

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>练习用的网页</title>
        <style>
        a {
            text-decoration: none;
        }

        body {
            margin: 0;
            width:100%;
            height: 100%;
        }

        #header {
            background-color:#0c1f27;
            color:#20b2aa;
            text-align:center;
            padding:15px;
        }
        
        #nav {
            line-height:60px;
            background-color:#e0f2f0;
            width:80px;
            padding:30px;
            position: absolute;
            left: 0;
            top:0;
            bottom: 0;
        }

        #footer {
            background-color:#0c1f27;
            color:#20b2aa;
            clear:both;
            text-align:center;
            padding:35px;
        }

        #main {
            margin-left: 140px;
            padding-left: 150px;
            padding-right: 220px;
            overflow: scroll;
        }

        #article {
            display: flex;
            position: relative;
        }

        .catlog{
            font-size:20px;
            color:black;
            font-family: sans-serif;
        }

        .title {
            color:#20b2aa;
            font-size:20px;
        }

        .img {
            width: 185px;
            height: 266px;
        }
        </style>
    </head>

    <body>
        <div id="header">
        <h1 style="font-size:50px;">这个书苑不太冷</h1>
        </div>

        <div id="article">
            <div id="nav">
                <a href="#type1" class="catlog">科幻小说</a><br>
                <a href="#type2" class="catlog">人文读物</a><br>
                <a href="#type3" class="catlog">技术参考</a><br>
            </div>
            <div id="main">
                <div class="books">
                    <h2><a name="type1">科幻小说</a></h2>
                    <a href="https://book.douban.com/subject/27077140/" class="title">《奇点遗民》</a>
                    <p class="info">本书精选收录了刘宇昆的科幻佳作共22篇。《奇点遗民》融入了科幻艺术吸引人的几大元素:数字化生命、影像化记忆、人工智能、外星访客……刘宇昆的独特之处在于,他写的不是科幻探险或英雄奇幻,而是数据时代里每个人的生活和情感变化。透过这本书,我们看到的不仅是未来还有当下。</p> 
                    <img class="img" src="https://img3.doubanio.com/view/subject/l/public/s29492583.jpg">
                    <br/>
                    <br/>
                    <hr size="1">
                </div>
                <div class="books">
                    <h2><a name="type2">人文读物</a></h2>
                    <a href="https://book.douban.com/subject/26943161/" class="title">《未来简史》</a>
                    <p class="info">未来,人类将面临着三大问题:生物本身就是算法,生命是不断处理数据的过程;意识与智能的分离;拥有大数据积累的外部环境将比我们自己更了解自己。如何看待这三大问题,以及如何采取应对措施,将直接影响着人类未来的发展。</p> 
                    <img class="img" src="https://img3.doubanio.com/view/subject/l/public/s29287103.jpg">
                    <br/>
                    <br/>
                    <hr size="1">
                </div>
                
                <div class="books">
                    <h2><a name="type3">技术参考</a></h2>
                    <a href="https://book.douban.com/subject/25779298/" class="title">《利用Python进行数据分析》</a>
                    <p class="info">本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。由于作者Wes McKinney是pandas库的主要作者,所以本书也可以作为利用Python实现数据密集型应用的科学计算实践指南。本书适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。</p> 
                    <img class="img" src="ttps://img3.doubanio.com/view/subject/l/public/s27275372.jpg">
                    <br/>
                    <br/>
                    <hr size="1">
                </div>
            </div>
        </div>

        <div id="footer">goood
        </div>
    </body>
</html>
HTML的基础结构
<html>
		<head>
				网页头的内容
		</head>
		<body>
				网页的具体内容
		</body>
</html>

HTML元素
<h1>		</h1>		一级标题
<h2>		</h2>		二级标题
<p>		</p>			段落
<a>		</a>			超级链接
<div>		</div>		块

HTML属性
class		为html元素第一一个或多个类
id		定义元素的唯一id
href		用来定义连接
style		规定元素行内样式

简单爬出解析实例

from bs4 import BeautifulSoup
import requests 
url='https://wordpress-edu-3autumn.localprod.oc.forchange.cn/all-about-the-future_04/'
response=requests.get(url)
content=response.text
soup=BeautifulSoup(content,'html.parser')

soup_task=soup.find_all(id='comments')
#print(soup_task[0])
pinlun=soup_task[0].find_all(class_="comment-list")
result=[]
a=pinlun[0].find_all('p')
for a1 in a:
    result.append(a1.text)
print(result)

'''调试笔记
print()
print(len())
print(x[0])
'''

实例3

from bs4 import BeautifulSoup
import requests 
url='https://wordpress-edu-3autumn.localprod.oc.forchange.cn/'
response=requests.get(url)
content=response.text
soup=BeautifulSoup(content,'html.parser')

result=soup.find_all('header',class_="entry-header")
print(len(result))
res=[]
for a in result:
    title=a.find('h2').text
    time=a.find('time',class_="updated").text
    url=a.find('a')['href']
    print('标题:'+title+'\n'+'更新时间:'+str(time)+'\n'+'网址:'+url+'\n')

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值