1、网页输出乱码的解决办法
r= requests.get('https://www.baidu.com/')
r.encoding = 'gbk2312' #有可能 gbk、utf-8
soup=BeautifulSoup(r.text,"html.parser")
来源:https://blog.csdn.net/w839687571/article/details/81414433
2、打开本地html的方法
import requests
from bs4 import BeautifulSoup
import io
path = '/Users/lucax/Desktop/素材/html/123.html'
htmlfile = io.open(path, 'r', encoding='utf-8')
htmlhandle = htmlfile.read()
soup = BeautifulSoup(htmlhandle, "html.parser")
print soup
2-1、自己输入文字再输出的方法
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup)
comment = soup.b.string #输出里面的字符
soup.prettify() #套上html框架加入markup的文案输出
3、各种拿网页元素的方法
soup.title --获取网页title
soup.title.name --获取title标签的标签文案
soup.title.string --获取title标签里面的文案 string 和 text 用法的区别 https://www.cnblogs.com/kaibindirver/p/11374669.html
soup.strings --获取网页所有文案,每个文案分别放入到数组里,但只能使用for循环展示出来
soup.stripped_strings ---(接着strings取出的内容)可以把空格和换行符去掉
soup.p --获取网页的p标签
soup.a --获取网页的a标签
soup.find_all('a') --获取网页所有的a标签
soup.find(id='link3') --获取id=link3的标签
soup.find('a',id='link2') --获取 a 标签 且 id=link2 的标签
soup.get_text() --获取网页中所有文字内容
soup.text.encode('utf-8') --获取网页中所有文字内容 另外一种写法
soup.text --获取网页中所有文字内容 另外一种写法
4、标签内属性、值、标签名操作的方法
soup.p['class'] -获取标签里面的属性对应的值
soup.p.get('class') -获取标签里面的属性对应的值,另一种写法
soup.p.attrs --获取p标签所有的属性和值(字典形式输出)
soup.a.name='新的标签' --修改网页里面a标签的标签为'新的标签'
soup.p['class']='123' --修改属性的值
del soup.p['class'] --删除属性
5、替换文案的操作方法
soup.div.find('div',id="site_nav_top").replace_with("No longer bold") --替换整个标签的方法
soup.div.find('div',id="site_nav_top").string.replace_with("No longer bold") --替换标签内文案的方法
6、把tag内的子节点已列表形式输出 .contents 属性
head_tag = soup.head
head_tag
# <head><title>The Dormouse's story</title></head>
head_tag.contents
[<title>The Dormouse's story</title>]
title_tag = head_tag.contents[0]
title_tag
# <title>The Dormouse's story</title>
title_tag.contents
# [u'The Dormouse's story']
7.获取网页所有标签内文字
soup.strings
stripped_strings 过滤空格的方法
用法
for string in soup.strings:
print string
8、搜索有特定属性的标签的方法
9\获取tr标签内多个td标签,其中一个td标签里面em标签的写法