最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释

我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果

但是自己又没有心思做这样一个数据库,于是就想到了百度百科这么一个现成的 “数据库”

下面我们就通过 urllib 和 xpath 来获取百度百科的内容

1、爬取百度百科

百度百科是一个静态网页,爬取起来很简单,而且请求参数可以直接放在 URL 里面,例如:

可以说是十分方便,也不多说,直接放代码,有不明白的地方可以看看注释:

如果对于 urllib 的使用不太清楚,可以参考 爬虫系列(三) urllib的基本使用

如果对于 xpath 的使用不太清楚,可以参考 爬虫系列(九) xpath的基本使用

import urllib.request

import urllib.parse

from lxml import etree

def query(content):

# 请求地址

url = 'https://baike.baidu.com/item/' + urllib.parse.quote(content)

# 请求头部

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'

}

# 利用请求地址和请求头部构造请求对象

req = urllib.request.Request(url=url, headers=headers, method='GET')

# 发送请求,获得响应

response = urllib.request.urlopen(req)

# 读取响应,获得文本

text = response.read().decode('utf-8')

# 构造 _Element 对象

html = etree.HTML(text)

# 使用 xpath 匹配数据,得到匹配字符串列表

sen_list = html.xpath('//div[contains(@class,"lemma-summary") or contains(@class,"lemmaWgt-lemmaSummary")]//text()')

# 过滤数据,去掉空白

sen_list_after_filter = [item.strip(' ') for item in sen_list]

# 将字符串列表连成字符串并返回

return ''.join(sen_list_after_filter)

if __name__ == '__main__':

while (True):

content = input('查询词语:')

result = query(content)

print("查询结果:%s" % result)

效果演示:

2、爬取维基百科

上面的确是可以解决一些问题,但是如果用户查询为英文怎么办?我们知道,百度百科一般极少收录英文词条

类似的,很容易想到爬取维基百科,思路也和爬取百度百科一样,只需处理一下请求地址和返回结果就好

下面也是直接放上代码,有不明白的地方可以看看注释:

from lxml import etree

import urllib.request

import urllib.parse

def query(content):

# 请求地址

url = 'https://en.wikipedia.org/wiki/' + content

# 请求头部

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'

}

# 利用请求地址和请求头部构造请求对象

req = urllib.request.Request(url=url, headers=headers, method='GET')

# 发送请求,获得响应

response = urllib.request.urlopen(req)

# 读取响应,获得文本

text = response.read().decode('utf-8')

# 构造 _Element 对象

html = etree.HTML(text)

# 使用 xpath 匹配数据,得到

下所有的子节点对象

obj_list = html.xpath('//div[@class="mw-parser-output"]/*')

# 在所有的子节点对象中获取有用的

节点对象

for i in range(0,len(obj_list)):

if 'p' == obj_list[i].tag:

start = i

break

for i in range(start,len(obj_list)):

if 'p' != obj_list[i].tag:

end = i

break

p_list = obj_list[start:end]

# 使用 xpath 匹配数据,得到

下所有的文本节点对象

sen_list_list = [obj.xpath('.//text()') for obj in p_list]

# 将文本节点对象转化为字符串列表

sen_list = [sen.encode('utf-8').decode() for sen_list in sen_list_list for sen in sen_list]

# 过滤数据,去掉空白

sen_list_after_filter = [item.strip(' ') for item in sen_list]

# 将字符串列表连成字符串并返回

return ''.join(sen_list_after_filter)

if __name__ == '__main__':

while (True):

content = input('Word: ')

result = query(content)

print("Result: %s" % result)

下面是效果演示:

OK,大功告成!

注意:本项目代码仅作学习交流使用!!!

用python 爬取百度百科内容-爬虫实战(一) 用Python爬取百度百科相关推荐

  1. python实例豆瓣音乐代码_Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细

    前言 首先我们先来回忆一下上两篇爬虫实战文章: 第一篇:讲到了requests和bs4和一些网页基本操作. 第二篇:用到了正则表达式-re模块 今天我们用lxml库和xpath语法来爬虫实战. 1.安 ...

  2. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  3. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  4. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  5. Python带进度条的小说爬虫(笔趣网爬小说—简约版)

    Python带进度条的小说爬虫(笔趣网爬小说-简约版) 准备: BeautifulSoup.selenium.PhantomJS 注意PhantomJS安装方式 这里附上安装方式连接: https:/ ...

  6. python xpath介绍和新闻内容爬虫

    二十.python xpath介绍和新闻内容爬虫 Xpath介绍 用xpath提取感兴趣的内容 一个网页文档是一个半结构化的数据,其实html文档就是一个树形结构.根节点是html 用正则表达式也可以 ...

  7. python爬虫获取的网页数据为什么要加[0-Python爬虫实战1-解决需要爬取网页N秒后的内容的需求...

    -------谢谢您的参考,如有疑问,欢迎交流 前引: 当你需要爬取的页面内容在访问页面5秒后才会出现, 这时使用python的requests模块就很难爬取到你想要的内容了. requests和se ...

  8. python批量下载静态页面_爬虫实战之,爬取壁纸,批量下载

    一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按 ...

  9. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

最新文章

  1. centos7系统下scala安装详解
  2. typescript tslint rules config
  3. 转:org.apache.maven.archiver.MavenArchiver.getManifest错误
  4. 飞鸽传书下载2013
  5. web端业务数据管理平台+Axure运营数据管理平台+月度数据统计分析+年度排行榜数据统计页面分析+运营大数据统计管理后台+用户信息管理+Axure通用web端高保真交互业务数据管理平台
  6. 漫画:如何给女朋友解释什么是2PC(二阶段提交)?
  7. HTML实现点击时的阴影(:active)(已解决iOS微信上无法使用)
  8. C++冒泡排序(初级版)
  9. 贝叶斯分析——从数值积分到MCMC
  10. 热烈庆贺博客等级V7
  11. 4.2V锂电池充电、放电保护电路分享
  12. 下载并安装JDK7 教程
  13. 青出于蓝胜于蓝 (dfs序 + BIT)
  14. 如何判断某个物体当前是顺时针还是逆时针旋转
  15. Python学习笔记——照片换底色
  16. 欧拉角速率与机体角速度转换详细推导
  17. sled11 sp2 opensuse zypper usage fr net
  18. Java程序设计课程——实验2
  19. Sublime Text 3—Project(项目管理)
  20. 2019.9.19年华为杯数模

热门文章

  1. vim 按照字段排序文件
  2. hdfs du命令是算的一份数据
  3. sphinx是支持结果聚类的
  4. js------搜索敏感词正则表达式Math方法
  5. Golang内建库学习笔记(1)-sort和container
  6. Ubuntu下配置和编译cpp-ethereum客户端
  7. HTML特殊字符编码对照表
  8. background-position 使用方法具体介绍
  9. C#中String对象转换为Font对象的方法
  10. 2012.3.17庆祝我的博客创建!名字是web-sheena