美文网首页
使用Python开发Web爬虫的笔记

使用Python开发Web爬虫的笔记

作者: 伪学识青年 | 来源:发表于2019-06-01 16:46 被阅读0次

    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>

    为了避免爬取之前爬取过的页面,因此将爬取过的网页链接规则化的保存,并且要确保当前保存的链接在程序运行时容易查询。只有对之前没有爬取过的页面链接才进行爬取,简单网页代码如下:

    相关文章

      网友评论

          本文标题:使用Python开发Web爬虫的笔记

          本文链接:https://www.haomeiwen.com/subject/ameatctx.html