发表于: 2018-01-11 22:05:59

1 1009


今天完成的事情:爬取百度百科词条


1、介绍

    今天利用前几天学到的urllib、BeautifulSoup及正则表达式相关知识,动手编制了一段简易的爬虫代码,目标是获取百度百科中的自然频道页面的词条信息。


2、源代码

from urllib import request
from bs4 import BeautifulSoup
import re

# 请求URL,并把获取到的结果用UTF-8编码
resp = request.urlopen('http://baike.baidu.com/ziran').read().decode('utf-8')

# 使用BeautifulSoup的内置解析器进行解析
soup = BeautifulSoup(resp,'html.parser')

# 搜索所有a标签,其href属性值以“http://baike.baidu.com/view/”开头
listUrl = soup.findAll('a', href=re.compile('^http://baike.baidu.com/view/'))

for url in listUrl:
   # 过滤掉文本内容为阅读全文详情a标签,也过滤掉文本内容为空的a标签
   if (not re.search('阅读全文|详情', url.get_text())) and (url.string is not None):
       # 输出所有词条的名称及对应的URL链接
       print(url.get_text(), ' ======> ', url['href'])


3、输出结果

D:\PycharmProjects\untitled\venv\Scripts\python.exe D:/PycharmProjects/PyCode/baidu.py

蜗鸢  ======>  http://baike.baidu.com/view/668147.html

纹翅鸢  ======>  http://baike.baidu.com/view/3570272.html

黑翅鸢  ======>  http://baike.baidu.com/view/33021.html

白尾鸢  ======>  http://baike.baidu.com/view/3565553.html

弧边招潮蟹  ======>  http://baike.baidu.com/view/455446.html

招潮蟹属  ======>  http://baike.baidu.com/view/1883910.html

清白招潮蟹  ======>  http://baike.baidu.com/view/1244525.html

环纹招潮蟹  ======>  http://baike.baidu.com/view/3149537.html

大嘴乌鸦  ======>  http://baike.baidu.com/view/262114.html

鸦科  ======>  http://baike.baidu.com/view/594852.html

西丛鸦  ======>  http://baike.baidu.com/view/2860902.html

鞍背鸦  ======>  http://baike.baidu.com/view/725112.html

洪涝灾害  ======>  http://baike.baidu.com/view/803942.html

强降雨  ======>  http://baike.baidu.com/view/658299.html

弥勒葡萄  ======>  http://baike.baidu.com/view/8696329.htm

鹪鹩属  ======>  http://baike.baidu.com/view/3119555.htm

清流溪鱼  ======>  http://baike.baidu.com/view/9210819.htm

紫袖凤凰螺  ======>  http://baike.baidu.com/view/361245.htm

厚叶川木香  ======>  http://baike.baidu.com/view/787666.htm

火炭母  ======>  http://baike.baidu.com/view/277472.html

蓼科  ======>  http://baike.baidu.com/view/151012.html

石竹亚纲  ======>  http://baike.baidu.com/view/480071.html

马岛鸭  ======>  http://baike.baidu.com/view/3133424.htm

鹦鹉鱼  ======>  http://baike.baidu.com/view/41276.htm

松浦镜鲤  ======>  http://baike.baidu.com/view/9269594.htm

鸡枞菌  ======>  http://baike.baidu.com/view/230765.htm

美洲红鹮  ======>  http://baike.baidu.com/view/1080053.htm

捕蝇草  ======>  http://baike.baidu.com/view/54170.html

银河系  ======>  http://baike.baidu.com/view/6282.htm

虎鲸  ======>  http://baike.baidu.com/view/9005.htm

圣痕  ======>  http://baike.baidu.com/view/500307.html

太阳星云  ======>  http://baike.baidu.com/view/680926.html

中华曙猿  ======>  http://baike.baidu.com/view/550862.html

近地小行星  ======>  http://baike.baidu.com/view/539365.htm

虫洞  ======>  http://baike.baidu.com/view/1941.htm

灶神星  ======>  http://baike.baidu.com/view/47005.htm

杜立巴  ======>  http://baike.baidu.com/view/1417038.html

外星人  ======>  http://baike.baidu.com/view/2500.html

塔利事件  ======>  http://baike.baidu.com/view/2743007.html

白鳍豚  ======>  http://baike.baidu.com/view/1484.html

鼷鹿  ======>  http://baike.baidu.com/view/25252.html

藏羚羊  ======>  http://baike.baidu.com/view/7342.html

剑齿虎  ======>  http://baike.baidu.com/view/32039.html

三叶虫  ======>  http://baike.baidu.com/view/1478.html?fromTaglist

巨齿鲨  ======>  http://baike.baidu.com/view/58512.html

Process finished with exit code 0


收获:通过这次编程实践,把前几天所学的知识进行了再巩固,加深了对所学知识的理解,同时也对Python的强大编程能力真心感到惊叹!短短几行代码,就实现了简易的“爬虫”功能,如果等到后面数据库知识学习后,对获取结果保存至数据库,再通过数据库,对其中抓取的URL继续进行循环爬取,结合线程、异常处理等一些高级的健壮编程技术处理后,就是一个很不错的爬虫软件了。





返回列表 返回列表
评论

    分享到