版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sponge_bobo_herbert/article/details/79568203
自上次成功尝试爬取了静态页面的图片之后,本白又跟着另一篇博文做了一下爬取网页文本的尝试。基本代码都是来源于该篇博文,本人只是做了轻微修改。
以python3为背景,这里还是先定义一个读取html页面信息的函数:
import urllib.request
def getHtml(url):
page = urllib.request.urlopen(url) #打开url地址
html = page.read().decode('utf-8') #读取html页面数据
return html
下面定义了一个获取网页文本的函数
def getWord(html):
bs = BeautifulSoup(html, "html.parser") #实例化对象
namelist = bs.findAll("a") #获取a标签
return namelist
这里,关于BeautifulSoup的用法见:BeautifulSoup基本用法总结
由于该库是第三方库,因此需要进行另外安装python3实现网络爬虫(2)–BeautifulSoup使用(1)
这是一个系列教程,有兴趣的同学可以参考,传送门 陌上行走
BeautifulSoup(html, #html文本字符串
"html.parser", #html解析器,也可用lxml等解析器,
#见上述“基本用法”链接
from_encoding = 'utf8') #html文档的编码
在该getword()
函数中,findAll()
函数是BeautifulSoup的内置函数,用法可参见上述链接。
一定要注意,这里是findAll, 不是findall。因为本白当时就是在这里出错许久,然鹅找不出原因。
主要函数介绍完了,下面就是怎么调用了
url = "http://toutiao.sogou.com/guonei.html"
html = getHtml(url)
namelist = getWord(html)
for name in namelist:
print(name.get_text()) #获取a标签中的文字
这里的namelist是一个由<a>
标签组成的列表,get_text()
就是获取每一个<a>
标签的文字内容。
下面是完整代码
import urllib.request
import re
from bs4 import BeautifulSoup
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read().decode('utf-8')
return html
def getWord(html):
bs = BeautifulSoup(html, "html.parser") #实例化对象
namelist = bs.findAll("a")
return namelist
url = "http://toutiao.sogou.com/guonei.html"
html = getHtml(url)
namelist = getWord(html)
for name in namelist:
print(name.get_text()) #获取a标签中的文字