发表于: 2018-01-11 22:05:59
1 1203
今天完成的事情:爬取百度百科词条
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继续进行循环爬取,结合线程、异常处理等一些高级的健壮编程技术处理后,就是一个很不错的爬虫软件了。
评论