Python爬虫实战(一) 用Python爬取百度百科

2023-05-16

1、爬取百度百科

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

地址 https://baike.baidu.com/item/网络爬虫 对应的就是 网络爬虫 的百度百科页面

地址 https://baike.baidu.com/item/计算机 对应的就是 计算机 的百度百科页面

在这里插入图片描述
可以说是十分方便,也不多说,直接放代码,有不明白的地方可以看看注释:

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('\n') 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 匹配数据,得到 <div class="mw-parser-output"> 下所有的子节点对象
    obj_list = html.xpath('//div[@class="mw-parser-output"]/*')
    # 在所有的子节点对象中获取有用的 <p> 节点对象
    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 匹配数据,得到 <p> 下所有的文本节点对象
    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('\n') 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 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫实战(一) 用Python爬取百度百科 的相关文章

  • RK3399pro debian10 系统下安装RKNN-Toolkit 1.7.0

    RK3399pro debian10 系统下安装rknn toolkit 1 7 0 本次安装方法是基于RK3399pro 官方开发板 xff08 RK EVB RK3399PRO LP3S178P332SD8 V14 20191108 L
  • PackageManager类用法

    android中的PackageManager类获取的是项目的包 xff0c 它对应到的是Manifest xml文件中的 其具体的使用如下 context getPackageManager getPackageInfo context
  • py文件移动到其他文件夹后pycharm无法执行,提示No Python interpreter configured for the project,简单直接的解决方法

    在我们把py文件迁移到其他地方后 xff0c 打开通常会出现这种情况 xff0c 原因就是虚拟环境没有配置好 xff0c 有个比较简单的方法解决 1 新建一个项目 xff0c 随便命名都行 xff0c 我这里是untitled2 xff08
  • iOS,面试必看,最全梳理

    序言 目前形势 xff0c 参加到iOS队伍的人是越来越多 xff0c 甚至已经到供过于求了 今年 xff0c 找过工作人可能会更深刻地体会到今年的就业形势不容乐观 xff0c 加之 xff0c 培训机构一火车地向用人单位输送iOS开发人员
  • Android-自定义View集合

    学习安卓几个月了 xff0c 也有点自己的体会 xff0c 然而我发现自己真正喜欢的是数据方面的东西 xff0c 当然android自定义view也很好玩 xff0c 很体验一些技巧性的东西 也不想自己以前学习过程总结的东西就此淹没 xff
  • 新版本VSCode的eslint使用指导

    1 VSCode版本 xff1a 2 VSCode插件栏搜索 eslint 安装 xff1b 3 开启eslint xff1a 在首选项的用户设置里搜索formatOnSave 勾选 xff1b 4 安装eslint npm install
  • crontab、flock、timeout的配合使用实现定时任务超时及报警

    需求场景 开发后台的同学 xff0c 经常需要写一些脚本定时启动运行 xff0c 通常使用crontab来实现 有时候还有更加苛刻的需求 xff1a 脚本不仅需要定时启动 xff0c 而且还需要保证互斥 xff08 同一时间只有一个进程在跑
  • (原创)Flutter基础入门:手把手教你搭建Flutter混合项目:AAR方式集成

    前言 上一篇博客讲了如何用 模块代码依赖模式 这种方式去搭建Flutter混合项目 因为篇幅原因 xff0c AAR集成方式来搭建项目的步骤和注意点放到这篇博客来讲 如果你没看过上篇博客 xff0c 建议先阅读上一篇 xff1a xff08
  • Linux基础知识之systemd详解

    0x00 Systemd 简述 1 Linux 启动流程 2 主角登场 0x01 Systemd Unit 1 配置文件 2 启动流程 3 进程树 Process tree 4 运行级别 0x02 Systemd Manager 1 Sys
  • IntelliJ IDEA中有什么让你相见恨晚的好用插件?

    hello xff0c 大家好 xff0c 我是 Jackpop xff0c 硕士毕业于哈尔滨工业大学 xff0c 曾在华为 阿里等大厂工作 xff0c 如果你对升学 就业 技术提升等有疑惑 xff0c 不妨交个朋友 xff1a 我是Jac
  • Android串口的使用(转载+移植)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 移植java文件二 移植jni文件总结 前言 最近需要在上层app使用串口 发送指令对底层硬件进行操作 xff0c 因此
  • webstorm 代码格式检测

  • Android NFC基础入门

    说道NFC 是Near Field Communication缩写 xff0c 就是近距离无线通讯技术 NFC采用主动和被动两种通信模式 工作的模式有三种 xff0c 读写标签 xff0c 点对点 xff0c 仿真卡模式 xff0c 今天我
  • 嵌入式系统实践 12 ——基于ARM汇编 Keil5 MSP432 P401R开发板

    物联网实验1 阿里云远程控制小灯 span class token comment span span class token comment span span class token comment MSP432P401 span sp
  • Linux下使用rpm包安装MySQL数据库

    root 64 Hadoop102 df h df 34 34 没有那个文件或目录 df 34 h 34 没有那个文件或目录 root 64 Hadoop102 df h 文件系统 容量 已用 可用 已用 挂载点 dev mapper ce
  • Linux下SSH登录的三种方式

    SSH登录 SSH密钥登录 xff1a SSH默认采用密码登录 xff0c 这种方法有很多缺点 xff0c 简单的密码不安全 xff0c 复杂的密码不容易记忆 xff0c 每次手动输入也很麻烦 密钥登录是更好的解决方案 接下来介绍三种SSH
  • 在失望中重找希望——我的2013年工作总结

    时间过的真的是快 来广州已整整工作了一年啦 从2012年长沙工作离职后 为了我的女朋友 我毅然踏上了南下广州的征途 来到羊城后 很快 xff0c 一个礼拜就找到了现在工作的这家公司 现在回想一下 真觉得当初没有好好斟酌一下 2013年里 x
  • ubuntu root开机自登录 与 ros 节点自启

    1 systemctl命令及开机自启 新建a sh文件 放入 cd etc vim a sh xff01 usr bin env bash bash c 34 source opt ros melodic setup bash amp am
  • (原创)详解Glide图片加载库常用方法

    前言 Glide作为安卓开发常用的图片加载库 xff0c 有许多实用而且强大的功能 xff0c 那么 xff0c 今天就来总结一番 xff0c 这次把比较常见的都写出来 xff0c 但并不是全部哦 在介绍之前 xff0c 先来说说什么是Gl
  • 如何将本地windows文件复制到远程windows服务器

    如何使用windows自带的远程桌面连接程序将文件复制到远程服务器内 运行中输入mstsc xff0c 点击确定 输入服务器的IP和端口 xff0c 点击右下角的选项 然后点击本地资源选项卡 点击详细信息按钮 此时勾选你所要连接到服务器上的

随机推荐