BeautifulSoup是使用比较广泛也比较容易使用的一个库,使用前需要导入:
from bs4 import BeautifulSoup
但是安装包时,包名不是bs4而是beautifulsoup4,也就是说需要
pip install beautifulsoup4
以本人博客主页为例,看看BeautifulSoup的使用。
首先要请求页面,使用requests.get(),返回的text属性就是页面代码,为了研究方便,把结果保存为文件。
# coding: utf-8
import requests
def get_page_csdn():
url = 'https://blog.csdn.net/cnnews?type=blog'
headers = {
'User-Agent': 'Mozilla/5.0',
}
response = requests.get(url,headers=headers)
html = response.text
with open(file='csdn.html',mode="w",encoding="utf-8") as f:
f.write(str(html))
return html
可以看到页面中的文章列表是位于<div class="mainContent"
<div class="mainContent" data-v-bb5f5e3e=""><div data-v-bb5f5e3e=""><div data-v-0db42936="" data-v-bb5f5e3e=""><div data-v-0db42936=""><article class="blog-list-box" data-v-0db42936="" data-v-6fe2b6a7=""><a data-report-click='{"spm":"3001.5501"}' data-report-query="spm=3001.5501" data-v-6fe2b6a7="" href="https://blog.csdn.net/cnnews/article/details/135380935" target="_blank"><div class="blog-img-box" data-v-6fe2b6a7=""><img alt="" class="course-img" data-v-6fe2b6a7="" src="https://img-blog.csdnimg.cn/img_convert/fad536e972e14ce4b37803185dc3b00c.png"/></div> <div class="list-box-cont" data-v-6fe2b6a7=""><div data-v-6fe2b6a7=""><div class="blog-list-box-top" data-v-6fe2b6a7=""><h4 data-v-6fe2b6a7="">Gstreamer的安装</h4>......
可以使用BeautifulSoup.find_all()或者BeautifulSoup.select()提取出标签内容
soup = BeautifulSoup( open( "./csdn.html" ),'html.parser' )
main = soup.find_all(name='div',attrs={"class":"mainContent"})
main = soup.select('div.mainContent')
find_all和select这两种没有区别,返回结果一样,不过如上select mainContent里的文章列表不能单独分离出来,所以要看看里面的标签,<article class="blog-list-box",这个标签返回的是文章列表,如果需要提取文章各个字段,就要看看<div class="blog-list-box-top",<div class="blog-list-content"等等,分别表示标题和简介。
from bs4 import BeautifulSoup
def prase_div():
soup = BeautifulSoup( open( "./csdn.html" ),'html.parser' )
#atticle_list = soup.find_all(name='div',attrs={"class":"blog-list-box-top"})#按照字典的形式给attrs参数赋值
list_top = soup.select('div.blog-list-box-top') #标题
list_content = soup.select('div.blog-list-content') #简介
list_time = soup.select('div.view-time-box') #发布时间
list_view = soup.select('div.view-num-box') #阅读
for i in range(0,len(list_top)):
print('{} \n{} {} {}\n'.format(list_top[i].text,list_content[i].text,list_time[i].text,list_view[i].text))
运行结果:
发现没有提取超链接,回过头来看html,上述字段是包裹在<a>标签里的,所以优化后的代码是访问<article class="blog-list-box"得到文章列表,然后提取每个字段其中超链接的提取为:
a.get('href')
from bs4 import BeautifulSoup
def prase_div():
soup = BeautifulSoup( open( "./csdn.html" ),'html.parser' )
list_article = soup.select('article.blog-list-box a')
for a in list_article:
print(a.get('href'))
asoup = BeautifulSoup(str(a),'lxml')
list_top = asoup.select('div.blog-list-box-top') #标题
list_content = asoup.select('div.blog-list-content') #简介
list_time = asoup.select('div.view-time-box') #发布时间
list_view = asoup.select('div.view-num-box') #阅读
print('{} \n{} {} {}\n'.format(list_top[0].text,list_content[0].text,list_time[0].text,list_view[0].text))
https://blog.csdn.net/cnnews/article/details/135380935
Gstreamer的安装
如果出现pycairo安装报错。
发布博客?2024.01.04?·
325?阅读?·
https://blog.csdn.net/cnnews/article/details/135360962
Gstreamer 使用appsrc传入随机生成的音频
音频生成部分请自己发挥,听起来实在惨不忍听。
发布博客?2024.01.03?·
298?阅读?·
https://blog.csdn.net/cnnews/article/details/135347205
Gstreamer 官方教程 basic-tutorial-7 python版
提供了一个audiotestsrc源,经过tee复用到两路,一路播放声音,一路显示为波形。
发布博客?2024.01.02?·
347?阅读?·
https://blog.csdn.net/cnnews/article/details/135344800
Gstreamer python 推流 rtmp 测试
import sysimport gi#推流测试continueif dbg:else:breakbreak。
发布博客?2024.01.02?·
903?阅读?·
https://blog.csdn.net/cnnews/article/details/135330200
gstreamer cmd
【代码】gstreamer cmd。
发布博客?2024.01.01?·
334?阅读?·