后台网站模板html,市场营销策略方案,艺术网站模板,你做的网站可视区域多少钱题外话#xff1a;
《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人#xff0c;信不信未来的PI#xff0c;了解一下#xff0c;唯一一个高度与之持平的项目 学了requests#xff0c;了解了伪装技巧后#xff0c;终于能爬到些比较正常的网页…题外话
《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人信不信未来的PI了解一下唯一一个高度与之持平的项目 学了requests了解了伪装技巧后终于能爬到些比较正常的网页源码html文档了但这离结果还差最后和是最重要的一步——筛选。这个过程就像在泥沙中淘金一样没有合适的筛子你就会把有价值的漏掉了或者做了无用功把没用的也筛了出来。 淘金者看土质做筛子。对应到爬虫领域就是观察html定制筛选器。
稍稍了解HTML
信息都在网页源码里浏览器通过解析源码来加载我们所看到的东西那我们是不是也应该学下如何看源码呢——是的
但不要方这不是html语法课做爬虫的只需了解一下html的原理和标签关系就行了这跟认亲戚一样简单你会看家族树的话根本不成问题。
示例html足以解释所有节点关系。
headtitle这些有尖括号的叫做标签或节点,成对存在。headtitle是标签名标签间可以放字符串。标签可以拥有属性属性在尖括号里如title标签有名为lang的属性属性值为en。A节点被B节点包起来A就是B的子或B是A的父。如book和title都是是bookstore的子但是book是bookstore的直接子只有一层包含关系有同一个直接父的标签互相为兄弟如titleauthoryearprice互为兄弟。
titleauthor/authoryear/yearprice/price
/title
好了准备以下代码信息用来练习获取内容:
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup
#准备代码信息用来练习获取内容
html
html
headtitleThe Dormouses story/title/head
body
h1b123456/b/h1
p classtitle namedromousebThe Dormouses story/baaaaa
/p
p classtitle namedromouse titlenewbThe Dormouses story/ba/p
p classstoryOnce upon a time there were three little sisters; and their names were a hrefhttp://example.com/elsie classsister idlink1!-- Elsie --/a, a hrefhttp://example.com/lacie classsister idlink2Lacie/a and a hrefhttp://example.com/tillie classsister idlink3Tillie/a;a hrefhttp://example.com/tillie classsiterr idlink4Tillie/a; a hrefhttp://example.com/tillie classsiterr idlink5Tillie/a; and they lived at the bottom of a well.
/p
p classstory.../p
ul iduloneli01/lili02/lili03/lili04/lili05/li
/ul
div classdiv11ul idultwoli0001/lili0002/lili0003/lili0004/lili0005/li/ul
/div
/body
/html
1.得到beautifulsoup对象
soup BeautifulSoup(html,html.parser) #选择解析器 2.获取内容
(1)获取标题对象
print(soup.title) 获取标题文本字符串:
print(soup.title.string) #返回迭代器出现换行就找不到了
print(soup.title.text)
print(soup.title.get_text())
title soup.find(title).get_text()
print(title) 通过上下级关系获取对象
print(soup.title.parent)
print(soup.title.child)
print(soup.title.children) 2获取第一个p标签
print(soup.p.get_text())
print(soup.find(p).text)
#获取p的子标签们 (空行也看成了一个children)
print(soup.p.children)
for i,echo in enumerate(soup.p.children):print(i,echo) 3获取标签的属性
#只能找到第一个a标签
print(1,soup.a)
print(2,soup.a.name)
#应该这样写
print(soup.a.attrs)
print(soup.a.attrs[href])
print(soup.a.attrs[id])
print(soup.a.attrs[class][0]) #获得的是一个列表可以用下标查询 4获取多个
print(soup.find(p)) #获取一个
print(soup.find_all(p)) #获取soup内的p标签 返回一个列表 5多层查询 find_all查询返回的是列表使用下标寻找想要的内容
print(soup.find_all(ul))
print(soup.find_all(ul)[0].find_all(li)) (6)通过指定的属性获取对象
print(soup.find(idulone)) #单个对象
print(soup.find(ul,idulone))
print(soup.find_all(ul,idulone)) #可以使用下标查询 class是关键字 要这么写class_
print(class1,soup.find_all(p,class_title))
print(class2,soup.find_all(p,attrs{class:title})) #更通用
print(class3,soup.find_all(p,attrs{class:title,title:new})) #多条件用函数作为参数获取元素
def judgeTilte1(t):if ttitle:return True
print(soup.find_all(class_judgeTilte1)) 判断长度
import re #正则表达式
reg re.compile(sis)
def judgeTilte2(t):#返回长度为6且包含sis的t参数return len(str(t))6 and bool(re.search(reg,t))
print(soup.find_all(class_judgeTilte2)) #获取文本内容
# p classtitle namedromouse
# bThe Dormouses story/b
# aaaaa
# /p
print(soup.find(p).text)
print(soup.find(p).string) #返回迭代器出现换行就找不到了b
print(soup.find(p).get_text()) 获取可以加limit的限制访问个数
print(soup.find_all(a,limit2)) recursive True 寻找子孙 recursive False只找子
print(soup.find_all(body)[0].find_all(ul,recursive False))