爬虫 Beautifulsoup 常用笔记

 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,则是从后往前

 

posted @ 2018-03-28 13:58  Mrfri  阅读(473)  评论(0编辑  收藏  举报