
我们通过输入关键字,爬取百度百科该关键字网页上的解释和其他词条的链接以及对应的副标题,最后控制显示链接的数量。
1 | '''本代码通过输入关键字,爬取百度百科该关键字网页上的解释和其他词条以及对应的副标题''' |
我的代码直接利用了time叠加的方式对链接数量进行控制。 翻看小甲鱼老师的代码,他使用了定义多个函数的方式和生成器, 于是我把原来的代码进行了改编,并进行比较。先看代码:
1 | '''本代码通过输入关键字,爬取百度百科该关键字网页上的解释和其他词条以及对应的副标题''' |
请注意下面两行
1 | links = sublinks(soup)#注意这个地方需要把函数赋值给变量,才能产生一个生成器,否者只能返回函数的第一个值 |
再看下面的例一
1 | #例一 |
上面例二也说明了如果定义了一个循环不是一个生成器,那么他只能return第一个值。而文章前段代码没有用函数来定义for tag in soup.find_all(href = re.compile('item'))产生的值,而在迭代循环里直接打印出了所有链接。所以这里就显示出了生成器的作用的用法。
总结:
- 应用BeautifulSoup通过寻找属性和属性值定位标签
- 正则表达式
- 生成器的作用的用法