cmd进入workon env1(进入env1虚拟环境)
pip install beautifulsou下载bs4
四大对象种类:
BeautifulSoup:将复杂HTML文档转换成一个复杂的树形结构
Tag:标签
NavigableString:标签里面的文本
BeautifulSoup:整个DOM树
Comment:注释(HTML注释<!-- -->)
创建xpath对象:s = etree.HTML(html)
创建BeautifulSoup对象:soup = BeautifulSoup(html,'lxml')
操作tag对象:soup.title,soup.head(类型都是bs4.element.Tag)
soup.a (只返回第一个a标签)
两个属性:name和attr(xpath用@)
soup.name(docment),
soup.head.name(返回标签名head)
soup.head.string,(返回标签里面的文字,直接获取注释里面的文本,不带注释符号)
soup.p.attrs(返回所有属性,放入字典里面)
soup.p.['class']和soup.p.get('class')(返回p标签,属性class的属性值)
soup.p['class'] = 'newclass'(修改p标签中,属性class的属性值)
del soup.p['class'](删除属性)
操作节点元素,访问任意属性,获取文本
直接子节点:.contents .children
soup.head.contents:返回列表 ,访问所有子节点
soup.head.contents[0]:返回列表的第一个元素
soup.head.children:返回迭代器,可以用for循环遍历
xpath,
css选择器
select()返回列表,select_one()返回列表中的第一个元素
如果没有元素,select()返回空列表,select_one()报错,确定有内容时使用,使用的时候可以判断一下
soup.select( '标签名' ):通过标签名查找,
soup.select( ' . 类名' ):通过类名查找
soup.select( ' # id名' ):通过类名查找
soup.select( 'p #link' ):p标签中,id等于link的内容,二者需要用空格分开,子孙标签
soup.select( 'body>p>a' ):直接子标签查找,则使用 > 分隔
soup.select( 'body>p>a#link' ):a标签中id等于link
soup.select( 'body>p>#link' )
soup.select( 'body>p>. stster' ):p标签下面的标签中,类名等于sister
属性查找:
soup.select( ' a[class="sister"]' )和soup.select( ' a.stster')
soup.select( 'a[href="http://......."]' )
soup.select( 'p a[href="http://......."]' )
属性获取:
soup.select
获取内容:
soup.select('title')[0].get_text()和soup.select('title')[0].string
区别:string可以获取注释里面的文本,get_text()不可以