维基百科首页词条的爬取【Python】

说明:以下内容学习自:http://www.imooc.com/

1、首先这个教程使用了V3的python,作者也讲到了一些功能函数,在V2不支持,经过测试,比如,urllib在V2就没有.request方法,实际上,网上反馈已经把urllib2合并到urllib中了。考虑到以后v3总会代替掉v2, 咱也升级算了。 顺便把win7也换成了win10, 貌似开机速度比win7还快。

2、直接上代码吧,加了中文注释,和视频教程大同小异的:之前的代码都是在sublime或者cmder里面操作,可发现换到V3以后,一个print在sublime中断报错提示,可完全一样的代码我用ipython又可以运行,好诧异。
所以,最后我干脆跑到pycharm去调试的。

__author__ = 'Administrator'
# coding:utf-8

import re
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs

# 使用urllib的urlopen方法,去打开维基百科的首页,读取,并用utf-8解码
resp = urlopen('https://en.wikipedia.org/wiki/Main_Page').read().decode('utf-8')

# 使用BeautifulSoup去解析,其中html.parser是默认的解析器
soup = bs(resp, 'html.parser')
# 获取所有的/wiki/开头的a标签的href属性。
listUrls = soup.find_all('a', href=re.compile(r'^/wiki/'))
print(listUrls)

# 输出所有的词条对应的名称和URL
for url in listUrls:
    # 排除.jpg JPG结尾的
    if not re.search('\.(jpg|JPG)$', url['href']):
        # 显示名称和网址的格式
        # string只能显示一个,而get_text()可显示标签下所有的文字。
        print(url.get_text(), '<---->', 'https://en.wikipedia.org'+url['href'])

3、win10遇到的问题:
MP出错,提示awesomium_v1.6.5异常,好在MP能提示到官网提供awesomium_v1.6.6_sdk_win.exe的下载,第一次安装失败,卡机,后重启Win10修复。

4、方法总结:

  • urllib相关函数得到网址和解码;
  • bs4进行解析,可使用默认的解析器或者lxml等解析器;
  • 根据要求和RE规则,找到所有的地址列表
  • for循环后加工

5、结果展示:网址直接可打开对应的wiki信息哦。

6、PS:作者提到的chrome插件postman通过翻墙下了最新版,看下载量和5星评级应该不错,不过暂时我还没体验到他的威力,以后有感悟的话,再更新。