美文网首页我爱编程
python爬虫笔记-weikipedia数据爬取

python爬虫笔记-weikipedia数据爬取

作者: SWJTU_CC | 来源:发表于2018-04-14 12:15 被阅读0次

    #from urllib import request

    from urllib.requestimport urlopen

    #from urllib.request import Request

    from urllib import parse

    from bs4 import BeautifulSoup

    import re

    #请求url并把结果用UTF-8编码

    resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")

    #使用BeautiSoup去解析

    soup = BeautifulSoup(resp,"html.parser")

    #获取所有以/wiki/开头的a标签的href属性

    listUrls = soup.find_all("a",href=re.compile("^/wiki/"))# ^表示是以wiki开头的,不是保护wiki的 , find_all返回的可以是一个正则表达式对象

    # print(listUrls)

    for urlin listUrls:

    print(url["href"])

    print("#########################################################")

    #输出所有词条对应名称和url

    for urlin listUrls:#循环记得加冒号

    #过滤以.jpg或者.JPG结尾的链接

        if not re.search("\.(jpg|JPG)$",url["href"]):#if记得加冒号 \.表示字符点号 $表示结尾

        print(url.get_text(),"-------","https://en.wikipedia.org" + url["href"])#输出url的href的属性 有冒号的地方就要缩进


    总结:urllib与BeautifulSoup

    常用的方法urlopen,它可以用来请求一个地址,read()方法可以读取里面的内容,decode内容就可以进行编码。

    BeautifulSoup自带utf-8的编码,所以在urlopen处写不写都可以。

    代码中传给BeautifulSoup的解析器是Python自带的解析器html.parser

    获取文字内容的方法有两个一个是.string,还有一个是.get_text(),区别是前者只能获取一个,后者是获取标签下所有的文字。

    相关文章

      网友评论

        本文标题:python爬虫笔记-weikipedia数据爬取

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