urllib与bs4,是获取和解析网页最常用的库
from urllib.request import urlopen
from bs4 import BeautifulSoup
html=urlopen("https://www.datalearner.com/website_navi")
通过urlopen获得网页对象,将其放入BeautifulSoup中,bsObj存放的目标网页的html文档
bsObj=BeautifulSoup(html.read())
print(bsObj)
学术导航,自定义导航页面 | 学习数据(Datalearner)
获取到BeautifulSoup对象bsObj
后,可以使用bsObj.h1
的方式获取html文档中的指定标签,也可以使用BeautifulSoup提供find()
和findAll()
来更加精准的解析标签
findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
.findAll({"h1","h2","h3","h4","h5","h6"})
,列表中的值为“或”关系.findAll("span", {"class":{"green", "red"}})
true
title=bsObj.title
print(title)
学术导航,自定义导航页面 | 学习数据(Datalearner)
title=bsObj.findAll({"title","p"})
if title != None:
for j in title:
print(j.get_text())
学术导航,自定义导航页面 | 学习数据(Datalearner)
将本页面设置为主页,登录后可以自定义导航,方便您去其他网站,欢迎使用哦~~~
#注意是class是python保留的关键字
navi_1=bsObj.findAll(class_="col-md-2 text-center")
navi_2=bsObj.findAll("",{"class":"col-md-2 text-center"})
navi_3=bsObj.findAll("div",{"class":"col-md-2 text-center"})
print(len(navi_1))
print(len(navi_2))
print(len(navi_3))
48
48
48
navi=bsObj.findAll(text={"新浪微博","网易云音乐"})
print(navi)
['新浪微博', '网易云音乐', '新浪微博']
imgs=bsObj1.findAll("img")
for img in imgs:
print(img)
navi_4=bsObj.findAll(href=["http://weibo.com","http://www.smzdm.com/"],text=["新浪微博","哈哈"])
print(navi_4)
[新浪微博]
html_1=urlopen("http://www.baidu.com")
bsObj1=BeautifulSoup(html_1.read())
children
与decendants()
的区别
html_2=urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html_2.read())
for child in bsObj.find("table",{"id":"giftList"}).children:
print(child)
prevoous_sibling
函数for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:
print(sibling)
在爬虫程序中,用到查询父标签的情况较少,查询父标签使用parent
atag=bsObj.find("table",{"id":"giftList"})
print(atag.parent)