python爬虫(1)...,,自从10号又是5天没


自从10号又是5天没更, 是, 我再一次断更... 原因是朋友在搞python, 老问我问题, 我python也是很久没碰了, 于是为了解决他的问题, 我只能重新开始研究python, 为了快速找回感觉, 我先是看了<简明python教程>, 出于兴趣考虑又开始看一本叫做<Web Scraping with Python>, 结果一发不可收拾, 直接把我的csapp扔在了一边, 真是太 ** 有意思了...

其中有几个很重要的库, 为了实行我的爬虫学习大计, 我准备先看BeautifulSoup的官方文档... 所以接下来就是关于BeautifulSoup官方文档的笔记 :

首先要知道BeautifulSoup是一个关于html解析(当然也有xml)的第三方库, 它能把html文件解析成为一棵树, 并且提供了很多强大的函数来帮助我们搜索其中的tags. 解析html所需要的解析库有这么几种 ...

技术分享

官方建议lxml, 速度很快...

首先如何来生成一个BeautifulSoup的对象呢?

1 from bs4 import BeautifulSoup2 3 soup = BeautifulSoup(open("index.html"))4 5 soup = BeautifulSoup("<html>data</html>")

你可以传入字符串(str和bytes)或者是filehandle... 首先它将你输入的文档转为Unicode, 接着开始用指定的parser进行解析, 当然如果你不指定parser的话默认使用html.parser,

上面已经说了其实本质上生成的BeautifulSoup对象是一棵树, 其实总共只需要了解四个对象 (Tag,NavigableString,BeautifulSoup, andComment).

Tag :

学过html的话, tag就是html里面的tag... 下面是tag的一些属性和方法 :

name: 比如超链接的tag.name就是a, <a href="..."></a>, 另外有一点值得注意的是, 我们可以改动tag.name, 这将反应在所有由该个BeautifulSoup生成的html中.

1 tag.name = "blockquote"2 tag3 # <blockquote class="boldest">Extremely bold</blockquote>

attrs : tag里面有很多attributes(比如name例子中tag a 里面有个attribute是href), 在这里是以字典的形式出现的. 你可以自由的访问或者修改甚至删除它们.

 1 tag.attrs 2 # {u‘class‘: u‘boldest‘} 3  4 tag[‘class‘] = ‘verybold‘ 5 tag[‘id‘] = 1 6 tag 7 # <blockquote class="verybold" id="1">Extremely bold</blockquote> 8  9 del tag[‘class‘]10 del tag[‘id‘]11 tag12 # <blockquote>Extremely bold</blockquote>13 14 tag[‘class‘]15 # KeyError: ‘class‘16 print(tag.get(‘class‘))17 # None

当然我们还可能碰到一些有多个值的属性, 在这里是以list的形式出现的, 同时只有符合标准的属性能出现多个值, 对于不符合标准的属性即使出现多个值也当做一个值处理, 同时XML不支持多值属性...

 1 css_soup = BeautifulSoup(‘<p class="body strikeout"></p>‘) 2 css_soup.p[‘class‘] 3 # ["body", "strikeout"] 4  5 css_soup = BeautifulSoup(‘<p class="body"></p>‘) 6 css_soup.p[‘class‘] 7 # ["body"] 8  9 id_soup = BeautifulSoup(‘<p id="my id"></p>‘)10 id_soup.p[‘id‘]11 # ‘my id‘12 13 rel_soup = BeautifulSoup(‘<p>Back to the <a rel="index">homepage</a></p>‘)14 rel_soup.a[‘rel‘]15 # [‘index‘]16 rel_soup.a[‘rel‘] = [‘index‘, ‘contents‘]17 print(rel_soup.p)18 # <p>Back to the <a rel="index contents">homepage</a></p>19 20 xml_soup = BeautifulSoup(‘<p class="body strikeout"></p>‘, ‘xml‘)21 xml_soup.p[‘class‘]22 # u‘body strikeout‘

python爬虫(1)...

相关内容

    暂无相关文章

评论关闭