ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Beautiful Soup在爬虫中的基本使用语法

2020-12-01 21:00:40  阅读:222  来源: 互联网

标签:Beautiful soup text title 爬虫 BeautifulSoup Soup print find


Beautiful Soup 是什么

Beautiful Soup是python 的一个HTML 或 XML的解析库,借助网页的结构和属性特征来解析网页,便于用户抓取数据。

Beautiful Soup能够自动将输入的文档转化为Unicode,输出的文档转换为UTF-8,这大大提高了文档提取的效率。

选择相应信息

基本用法如下

BeautifulSoup(markup, 'lxml')
from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'

# 构造一个html文档
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')
# prettify 可以把要解析的字符串以标准的HTML输出
print(soup.prettify)
# 输出HTML中title的内容
print(soup.title.string)

选择相应的节点,直接使用soup.title/soup.head/soup.p等,即可获取信息。需要注意的是soup.p,只能获取第一个节点的p

from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'
# 构造一个html文档
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')

# prettify 可以把要解析的字符串以标准的HTML输出
print(soup.prettify)
# 输出title
print(soup.title)
# 输出HTML中title文本的值
print(soup.title.string)
# 输出head
print(soup.head)
# 输出节点p
print(soup.p)

方法选择器

面对复杂的网页结构,采用属性来选择比较麻烦,这就需要使用find_all(),find()进行选择了。

find_all()

它的API如下

find_all(name, attrs, recursive, text, **kwargs)

表示:

name:根据节点名查询

attrs:通过传入属性查询

text:用来匹配节点的文本

find()的用法与find_all()的用法一样,区别是fin()返回的是单个元素,find_all()返回的是所有元素。

基本语法:

from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'
# 构造一个html文档
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')

# 根据节点名查询
print(soup.find_all(name='ul'))
# 通过传入属性查询
print(soup_find_all(attrs={'id': 'list-1'}))
print(soup_find_all(attrs={'name': 'elements'}))
# 用来匹配节点的文本
print(soup.find_all(text=re.compile('link')))

CSS选择器

如果对CSS选择器熟悉的话,可以使用select进行选择。

此文不做说明,更多CSS信息请查看这里

参考资料

《python3 网路爬虫开发实战》 崔庆才著

Change Log

20201201 创建

标签:Beautiful,soup,text,title,爬虫,BeautifulSoup,Soup,print,find
来源: https://blog.csdn.net/weixin_45228758/article/details/110451585

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有