1.
python3使用urllib包(标准库,不需要额外下载)
urllib包中主要使用以下三大块:
1.request
2.parse
3.Error
同时加上BeautifulSoup4进行html的解析和内容提取
若使用颜色来判断页面中的正文,那么可能只会将红色文本识别为正文,绿色文本则不会识别。
例如以下代码:
NameList=bsObj.findAll(“span”,{ “class”: “red”})
For name in NameList:
Print(name.get_text())
2.
findAll(tag,attributes,recursive,text,limit,keywords)
find(tag,attributes,recursive,text,keywords)
若将findAll的recursive的值设置为True,则该方法将会搜寻该节点下满足条件的子节点,子节点的子节点……,
若将recursive的值设置为False,该方法将只会在文档中搜索当前同等级的其他节点。默认,findAll将会递归搜索各个子节点(recursive设置为True)
nameList=bsObj.findAll(text=“the price”)
limit选项只用于findAll方法中,find方法与findAll方法在功能上是相同的,只是find方法是findAll方法将limit设置为1的结果。若只希望提取头X个出现并满足条件的条目,则可以使用find方法。例:
allText=bsObj.findAll(id=‘text’)
Print(allText[0].get_text())
3.
因为class是python中的一个关键字,因此class在python中是一个保留字,因此class不能被用于变量名。
例如:
bsObj.findAll(class=‘green’)
是错误的
bsObj.findAll(class_=‘green’)
则是正确的
你也可以使用以下的表述方法:
bsObj.findAll(“”,{“class”: “green”})
4.
Images=bsObj.findAll(“img”,{“src”:re.compile(“../../img/*.jpg”)})
Soup.findAll(lambda tag:len(tag.attrs)==2)
以上代码将会搜寻以下结构的节点:
<div class=“body” id=“content”></div>
<span style=“color:red” class=“title”></span>
为了避免爬取之前爬取过的页面,因此将爬取过的网页链接规则化的保存,并且要确保当前保存的链接在程序运行时容易查询。只有对之前没有爬取过的页面链接才进行爬取,简单网页代码如下:
网友评论