Beautifulsoup("http:........", "lxml") or "html.parser" or "html5lib"
soup.find返回的是一个对象,第一个符合条件的标签
soup.findAll返回的是一个列表,包含所有符合条件的标签
所以find后面可以直接接get_text函数,而findAll不行,只能将findAll列表中的元素,单独地去get_text
例如:
from urllib.request import urlopen from bs4 import BeautifulSoup import requests html = urlopen("http://www.biqukan.com/") a_html = BeautifulSoup(html,'lxml') mudi = a_html.find("div",{"class":"r bd"}).get_text() #find返回单个对象,可以直接接get_text() print(mudi) target = "http://www.biqukan.com/" req = requests.get(target) html2 = req.text bf = BeautifulSoup(html2,'html.parser') for mudi2 in a_html.find("div",{"class":"r bd"}).findAll("span",{"class":"s2"}): print(mudi2.get_text()) # findAll是一个列表,需要单独将元素get_text()
同时,注意urlopen和request方式是不同的
bsObj.findAll("h1") # 返回页面中标签为<h1>的一个列表 bsObj.findAll({"h1","h2","h3","h4","h5"}) # 获取全部标题标签的列表
a = bsObj.findAll("h2") len(a) # .findAll 返回的是列表,所以可以用 len() 计算个数
bsObj.findAll("", {"class":"green"}) # 返回所有标签属性class为green的标签,形成一个列表 bsObj.findAll("span", {"class":"green"}) # 返回所有的span标签中,属性class为绿色的
for child in jbsObj.find("table",{"id":"giftList"}).children # 在名为giftList的列表标签下,找到该列表标签的子标签 # 如果不是children而是descendants函数的话,就是该标签下的全部后代标签 # parent 寻找父标签 for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings: # 寻找该table标签的兄弟标签,不包括他本身,且从他开始往后 # 如果不是next_siblings, 而是previous_siblings,则是从后往前