Python用requests库爬取百度百科词条简介

步骤如下:

  1. 输入需要的关键词。
  2. 获取网页内容。
  3. 提取内容中词条的简介。

一般词条的格式:

  1. 纯文本介绍。

  2. 词多义或者含有其它词链接:
    在这里插入图片描述

    显示:

print为英文单词,其释义有打印、出版、出版物等。</div><div class="para" label-module="para">另外,print为常用编程命令。

正则提取:

data = re.sub(r'<([\s\S]*?)','',data)
  1. 另一种多解释:

在这里插入图片描述

please input wordkey:丁
        丁,汉语常用字
        [1]&nbsp;
        ,读作dīng、zhēng,最早见于甲骨文
        [2]&nbsp;
        ,其本义是钉子,是“钉”的初文,后引申为壮健,又引申为人口和指某些专职服务的人等
        [3]&nbsp;
        。(基本信息栏参考资料:
        [4]&nbsp;

正则提取:

data = re.sub(r'(&nbsp;|\n)','',data)

完整代码:

import re
import requests

#下载网页内容
def download(url):
    if url is None:
        return None
    # 浏览器请求头
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'
    headers={'User-Agent':user_agent}
    r = requests.get(url,headers=headers)
    if r.status_code == 200:
        r.encoding = 'utf-8'
        return r.text
    return None

#提取百科词条简介
def get_data(html):
    #regex = re.compile('<meta name="description" content="(.*?)">')
    regex = re.compile('<div class="lemma-summary" label-module="lemmaSummary">(\s*)<div class="para" label-module="para">([\s\S]*?)</div>(\s*)</div>')
    #data = [('\n', 'Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。', '\n')]
    data = re.findall(regex, html)[0][1]
    return data

if __name__ == '__main__':
    #输入词条
    keyword = input('please input keyword:')
    url = 'http://baike.baidu.com/item/{}'.format(keyword)
    html_cont = download(url)
    try:
        data = get_data(html_cont)
        data = re.sub(r'<([\s\S]*?)>|&nbsp;|\n','',data)
        print(data)
        with open(keyword+'.txt', 'w', encoding='utf-8') as f:
            f.write(data)
            f.close()
    except Exception as e:
        print(keyword, 'is not exist,crawl failed !')

其他:

有不足的地方欢迎留言!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值