Python BeautifulSoup网页分析技巧
- 根据标签名获取元素
使用 BeautifulSoup 的标签选择器可以很方便地按照标签名获取元素。
from bs4 import BeautifulSoup html_doc = """ <html> <head> <title>pidancode.com</title> </head> <body> <h1>皮蛋编程</h1> <p>Python 网页分析技巧</p> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') title_tag = soup.title h1_tag = soup.h1 print(title_tag.string) # pidancode.com print(h1_tag.string) # 皮蛋编程
- 根据类名获取元素
使用 BeautifulSoup 的 class 属性选择器可以很方便地按照类名获取元素。
from bs4 import BeautifulSoup html_doc = """ <html> <head> <title>pidancode.com</title> </head> <body> <h1 class="title">皮蛋编程</h1> <p class="content">Python 网页分析技巧</p> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') title_tag = soup.select_one('.title') content_tag = soup.select_one('.content') print(title_tag.string) # 皮蛋编程 print(content_tag.string) # Python 网页分析技巧
- 根据属性获取元素
使用 BeautifulSoup 的属性选择器可以很方便地按照属性获取元素。
from bs4 import BeautifulSoup html_doc = """ <html> <head> <title>pidancode.com</title> </head> <body> <a href="http://pidancode.com">pidancode.com</a> <a href="http://github.com/pidancode">GitHub</a> <a href="http://weibo.com/pidancode">微博</a> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') a_tags = soup.select('a') for a_tag in a_tags: print(a_tag.string, a_tag['href'])
输出结果为:
pidancode.com http://pidancode.com GitHub http://github.com/pidancode 微博 http://weibo.com/pidancode
- 获取子元素和父元素
使用 BeautifulSoup 的 .contents 和 .parent 属性可以很方便地获取子元素和父元素。
from bs4 import BeautifulSoup html_doc = """ <html> <head> <title>pidancode.com</title> </head> <body> <h1 class="title">皮蛋编程</h1> <p class="content">Python 网页分析技巧</p> <ul class="links"> <li><a href="http://pidancode.com">pidancode.com</a></li> <li><a href="http://github.com/pidancode">GitHub</a></li> <li><a href="http://weibo.com/pidancode">微博</a></li> </ul> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') ul_tag = soup.ul li_tags = ul_tag.contents print(ul_tag.parent.name) # body for li_tag in li_tags: print(li_tag.a.string, li_tag.a['href'])
输出结果为:
body pidancode.com http://pidancode.com GitHub http://github.com/pidancode 微博 http://weibo.com/pidancode
- 使用正则表达式匹配元素
使用 BeautifulSoup 的正则表达式匹配可以很方便地按照一定模式匹配元素。
from bs4 import BeautifulSoup import re html_doc = """ <html> <head> <title>pidancode.com</title> </head> <body> <h1 class="title">皮蛋编程</h1> <p class="content">Python 网页分析技巧</p> <ul class="links"> <li><a href="http://pidancode.com">pidancode.com</a></li> <li><a href="http://github.com/pidancode">GitHub</a></li> <li><a href="http://weibo.com/pidancode">微博</a></li> </ul> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') a_tags = soup.find_all(href=re.compile('pidancode')) for a_tag in a_tags: print(a_tag.string, a_tag['href'])
输出结果为:
pidancode.com http://pidancode.com 微博 http://weibo.com/pidancode
相关文章