如何使用实例化BeautifulSoup对象: from bs4 import BeautifulSoup 对象的实例化: 1、将本地的html文档中的数据加载到该对象中 f = open('/test.html','r',encoding='utf-8') soup = BeautifulSoup(f,'lxml') 2、互联网上获取的页面源码加载到该对象中 page_text = response.text soup = BeautifulSoup(page_text,'lxml') 提供的用于数据解析的方法和属性: soup.tagName:返回的是文档中第一次出现的tagName对应的标签 soup.find(): find('tagName'):等同于soup.div 属性定位:soup.find('div', class_/id/attr='song') soup.find_all('tagName'):返回符合要求的所有标签列表 select: select('某种选择器(id, class, 标签 )'),返回的是一个列表 层级选择器: soup.select('.tang > ul > li > a'): > 表示的是一个层级 soup.select('.tang > ul a'):空格表示的多个层级 获取标签之间的文本数据 soup.a.text/get_text()/string text/get_text():可以获取某个标签中的所有文本内容 string:只可以获取该标签下直系的文本内容 获取标签中的属性值: soup.a['href']案例实现
# 爬取三国演义小说中所有的章节标题和章节内容 from bs4 import BeautifulSoup import requests if __name__=='__main__': headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36' } # step1:实例化一个Beautiful Soup 对象,并将页面源码加载到这个对象中 url = "https://www.shicimingju.com/book/sanguoyanyi.html" page_text = requests.get(url,headers).content # .content 可以防止中文乱码 # 从首页中解析出章节和详情页的url soup = BeautifulSoup(page_text,'lxml') # step2:通过调用Beautiful Soup对象中相关的属性和方法进行标签定位和数据提取 li_list = soup.select(".book-mulu>ul>li") f = open('./三国.txt','w',encoding='utf-8') for li in li_list: detail_url = "https://www.shicimingju.com"+li.a['href'] title = li.a.text # 对详情页发起请求 detail_page_text = requests.get(detail_url,headers).content # 解析详情页面中的相关章节内容 detail_soup = BeautifulSoup(detail_page_text,'lxml') content = detail_soup.find('div',class_='chapter_content').get_text() f.write(title+':'+content+'n') print(title,"ok")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)