Python3网络爬虫(一):利用urllib进行简单的网页抓取

article/2025/9/7 14:17:30

运行平台:Windows
Python版本:Python3.x
IDE:Sublime text3

转载请注明作者和出处:http://blog.csdn.net/c406495762/article/details/58716886

    一直想学习Python爬虫的知识,在网上搜索了一下,大部分都是基于Python2.x的。因此打算写一个Python3.x的爬虫笔记,以便后续回顾,欢迎一起交流、共同进步。

一、预备知识

1.Python3.x基础知识学习:

    可以在通过如下方式进行学习:

    (1)廖雪峰Python3教程(文档):

    URL:http://www.liaoxuefeng.com/

    (2)菜鸟教程Python3教程(文档):

    URL:http://www.runoob.com/python3/python3-tutorial.html

    (3)鱼C工作室Python教程(视频):

    小甲鱼老师很厉害,讲课风格幽默诙谐,如果时间充裕可以考虑看视频。

    URL:http://www.fishc.com/

2.开发环境搭建:

    Sublime text3搭建Pyhthon IDE可以查看博客:

    URL:http://www.cnblogs.com/nx520zj/p/5787393.html

    URL:http://blog.csdn.net/c406495762/article/details/56489253

二、网络爬虫的定义

    网络爬虫,也叫网络蜘蛛(Web Spider),如果把互联网比喻成一个蜘蛛网,Spider就是一只在网上爬来爬去的蜘蛛。网络爬虫就是根据网页的地址来寻找网页的,也就是URL。举一个简单的例子,我们在浏览器的地址栏中输入的字符串就是URL,例如:https://www.baidu.com/

    URL就是同意资源定位符(Uniform Resource Locator),它的一般格式如下(带方括号[]的为可选项):

    protocol :// hostname[:port] / path / [;parameters][?query]#fragment

    URL的格式由三部分组成:

    (1)protocol:第一部分就是协议,例如百度使用的就是https协议;

    (2)hostname[:port]:第二部分就是主机名(还有端口号为可选参数),一般网站默认的端口号为80,例如百度的主机名就是www.baidu.com,这个就是服务器的地址;

    (3)path:第三部分就是主机资源的具体地址,如目录和文件名等。

    网络爬虫就是根据这个URL来获取网页信息的。

三、简单爬虫实例

    在Python3.x中,我们可以使用urlib这个组件抓取网页,urllib是一个URL处理包,这个包中集合了一些处理URL的模块,如下:

picture1

1.urllib.request模块是用来打开和读取URLs的;

2.urllib.error模块包含一些有urllib.request产生的错误,可以使用try进行捕捉处理;

3.urllib.parse模块包含了一些解析URLs的方法;

4.urllib.robotparser模块用来解析robots.txt文本文件.它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面。

    我们使用urllib.request.urlopen()这个接口函数就可以很轻松的打开一个网站,读取并打印信息。

picture2

    urlopen有一些可选参数,具体信息可以查阅Python自带的documentation。

    了解到这些,我们就可以写一个最简单的程序,文件名为urllib_test01.py,感受一个urllib库的魅力:

# -*- coding: UTF-8 -*-
from urllib import requestif __name__ == "__main__":response = request.urlopen("http://fanyi.baidu.com")html = response.read()print(html)

    urllib使用使用request.urlopen()打开和读取URLs信息,返回的对象response如同一个文本对象,我们可以调用read(),进行读取。再通过print(),将读到的信息打印出来。

    运行程序ctrl+b,可以在Sublime中查看运行结果,如下:

picture3

    也可以在cmd(控制台)中输入指令:

python urllib_test01.py

    运行py文件,输出信息是一样的,如下:

picture5

    其实这就是浏览器接收到的信息,只不过我们在使用浏览器的时候,浏览器已经将这些信息转化成了界面信息供我们浏览。当然这些代码我们也可以从浏览器中查看到。例如,使用谷歌浏览器,在任意界面单击右键选择检查,也就是审查元素(不是所有页面都可以审查元素的,例如起点中文网付费章节就不行.),以百度界面为例,截图如下:

picture6

    可以看到,右边就是我们的审查结果。我们可以在本地,也就是浏览器(客户端)更改元素,但是这个不会上传到服务器端。例如我可以修改自己的支付宝余额装一装,比如这样:

picture7

    我实际有这些钱吗?显然苦逼的我,是不会有这些钱的,我只不过是修改了下审查元素的信息而已。

    有些跑偏,不过说的道理就是,浏览器就是作为客户端从服务器端获取信息,然后将信息解析,再展示给我们的。

    回归正题,虽然我们已经成功获取了信息,但是显然他们都是二进制的乱码,看起来很不方便。我们怎么办呢?

    我们可以通过简单的decode()命令将网页的信息进行解码,并显示出来,我们新创建一个文件,命名为urllib_test02.py,编写如下代码(还是以百度翻译网站fanyi.baidu.com为例):

# -*- coding: UTF-8 -*-
from urllib import requestif __name__ == "__main__":response = request.urlopen("http://www.fanyi.baidu.com/")html = response.read()html = html.decode("utf-8")print(html)

    这样我们就可以得到这样的结果,显然解码后的信息看起来工整和舒服多了:

picture8

    当然这个前提是我们已经知道了这个网页是使用utf-8编码的,怎么查看网页的编码方式呢?需要人为操作,且非常简单的方法是使用使用浏览器审查元素,只需要找到head标签开始位置的chareset,就知道网页是采用何种编码的了。如下:

picture9

    这样我们就知道了这个网站的编码方式,但是这需要我们每次都打开浏览器,并找下编码方式,显然有些费事,使用几行代码解决更加省事并且显得酷一些。

四、自动获取网页编码方式的方法

    获取网页编码的方式有很多,个人更喜欢用第三方库的方式。

    首先我们需要安装第三方库chardet,它是用来判断编码的模块,安装方法如下图所示,只需要输入指令:

pip install chardet

picture10

    安装好后,我们就可以使用chardet.detect()方法,判断网页的编码方式了。至此,我们就可以编写一个小程序判断网页的编码方式了,新建文件名为chardet_test01.py:

# -*- coding: UTF-8 -*-
from urllib import request
import chardetif __name__ == "__main__":response = request.urlopen("http://fanyi.baidu.com/")html = response.read()charset = chardet.detect(html)print(charset)

    运行程序,查看输出结果如下:

picture11

    瞧,返回的是一个字典,这样我们就知道网页的编码方式了,通过获得的信息,采用不同的解码方式即可。

PS:关于编码方式的内容,可以自行百度,或者看下这篇博客:

URL:http://blog.csdn.net/csywwx2008/article/details/17137097


http://chatgpt.dhexx.cn/article/AkmHjEwC.shtml

相关文章

python3 爬虫(初试牛刀)

此文章仅供学习交流使用 在学习爬虫之前,把最近对于 VMware 的网络学习做个总结 接下来,步入正题! 分析 Robots 协议 禁止所有爬虫访问任何目录的代码: User-agent: * Disallow:/允许所有爬虫访问任何目录的代码: …

Python3爬虫详解

1概述 爬虫在Python中是个实现起来比较简单,关键在于网页的分析和内容的抓取。最近由于个人需要写了些内容,这里总结下爬虫相关的内容。 本文爬虫相关实现没有使用scrapy框架,通过urllib请求、bs4来实现。 2网络请求 网络请求部分用到urlli…

python3爬虫学习

python3爬虫学习 一、爬虫流程: ①先由urllib的request打开Url得到网页html文档 ②浏览器打开网页源代码分析元素节点 ③通过Beautiful Soup或则正则表达式提取想要的数据 ④存储数据到本地磁盘或数据库(抓取,分析,存储&…

最通俗、最详细的 Python3 网络爬虫入门指南

很多朋友学习Python都是先从爬虫开始,其原因不外两方面: 其一Python对爬虫支持度较好,类库众多,其二语法简单,入门容易,所以两者形影相随,不离不弃。 要使用python语言做爬虫,首先需…

Maven安装和配置本地仓库和阿里云镜像

maven安装配置换阿里源 1.下载maven 打开maven官网https://maven.apache.org/download.cgi,下载maven安装包,下载完成后解压到你想放的位置,不用安装 2.配置环境变量 3.配置阿里源和repository地址 打开刚才的解压文件conf文件夹下的setting.…

阿里云云效Maven仓库

一、Maven仓库概要 私服的目的:我们有一些自己的公用包,不想拉取工程编译,直接使用已经上传到私服的Jar包,在需要使用的项目工程直接引用使用,加速开发效率和编译效率。 阿里云仓库地址: 公用主仓库&#…

阿里云maven仓库的使用详解以及报错解决方法

仓库介绍 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。阿里云云效是企业级一站式 DevOps 平台,覆盖产品从需求到运营的研发全生命周…

IDEA设置Maven阿里镜像仓库

1.打开IDEA安装目录&#xff0c;并进入如下相对路径 "\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3\conf"。 2.打开settings.xml文件&#xff0c;并按照阿里官方指南插入配置项到指定位置。 2.1) 查看官方指南 2.2) 复制配置内容 <mirror><id>al…

IDEA中的maven阿里仓库配置

IDEA中的maven阿里仓库配置 1、进入官网&#xff1a; http://maven.apache.org/download.cgi 下载解压&#xff0c;然后记住解压位置 2、settings.xml配置更改 打开下载的文件 apache-maven-3.6.3 > conf> settings.xml&#xff08;图一为原文件&#xff0c;图二为配置…

gradle配置阿里Maven仓库

使用gradle编译一个开源项目时&#xff0c;发现下载依赖包比较慢,打开项目下的build.gradle文件: 可以看到并没有配置国内Maven仓库&#xff0c;那就配置一个呗,参照Gradle官方文档配置阿里Maven仓库 在build.gradle文件中修改repositories,也就是在mavenLocal()和mavenCentral…

maven配置阿里仓库

大家使用maven下载jar包会很慢&#xff0c;最主要的原因是maven的仓库在英国&#xff0c;但如果使用了阿里的仓库下载jar包就会变得很便捷。下面是如和配置阿里的仓库。 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>ali…

maven 配置阿里云仓库

目录 0. 前置工作&#xff1a;安装jdk1. 配置 maven 环境变量2. 配置阿里云镜像仓库3 idea中maven的相关配置 0. 前置工作&#xff1a;安装jdk 参考步骤 1 2 3 1. 配置 maven 环境变量 2. 配置阿里云镜像仓库 对解压后的maven的conf/settings进行编辑 本地仓库中没有的东…

Maven之阿里云镜像仓库配置

Maven 镜像 简介 阿里云Maven中央仓库为阿里云云效提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#xff0c;使用阿里云Maven中央仓库作为下载源&#xff0c;速度更快更稳定。阿里云云效 是企业级一站式 DevOps 平台&#xff0c;覆盖产品从需求到运营的研发全生…

阿里云Maven仓库

文章目录 一、仓库介绍二、配置指南1. maven 配置指南2. gradle 配置指南 三、国内Maven仓库搜索地址四、Maven-Search插件使用1. 安装2. 使用 一、仓库介绍 阿里云云效 Maven 是什么 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生…

免费无损高品质音乐下载器V3.5

无损音乐下载器&#xff0c;今天朋友推荐给我的测试的一款 win 平台音乐下载软件&#xff0c;支持无损、超品、高品等音质的下载&#xff0c;此外它还支持在线播放 MV。这款软件经过测试还不错&#xff0c;适合喜欢高品质音乐的朋友。当然如果对于音乐品质没有太高要求还是推荐…

付费音乐下载。

墨灵音乐可以直接下载各大音乐app的付费音乐。 链接&#xff1a;https://music.mli.im/ 打开链接以后点击探索音乐就可以啦。然后进去如下界面。 接着搜索你想要下载的音乐。我们随便搜索一首歌曲。点击下载歌曲。之后会进去这个界面。然后右键点击另存为 就可以下载啦。

抖音歌曲免费下载

无损音乐下载网站http://regeku.top 1、搜索需要下载的歌曲&#xff0c;点击下载。 2、点击下载歌曲 3、点击下载 4、点击下载 5、保存到桌面 6、手机扫码关注&#xff0c;点击热歌下载

如何免费下载网易云收费音乐?不需会员也能做到

今天的主题&#xff0c;就是给大伙介绍个免费下载网易云音乐的收费音乐&#xff08;其他平台也适用&#xff09; 。简单实用&#xff0c;基本不需要什么计算机编程基础&#xff0c;人人都可学会&#xff01; 废话不多说&#xff0c;直接进入主题&#xff01; 先用谷歌浏览器打…

免费下载网易云音乐付费歌曲及下架歌曲

网易云音乐一直被大家称为良心软件、音乐软件神器等等。但是&#xff0c;现在使用网易云音乐听歌&#xff0c;发现好多的歌曲已经不能播放和下载了。会显示灰色&#xff0c;播放时会提示“由于版权保护&#xff0c;您所在的地区暂时无法使用。”或者是“因合作方要求&#xff0…

MusicTools下载 v3.4.0 全网免费无损音乐下载器

下载地址&#xff1a;点我 随着音乐版权越来越受到重视&#xff0c;我们在线听歌的限制也越来越大。在一个音乐平台上&#xff0c;我们无法听到所有歌手的作品&#xff0c;因为该平台可能没有某个歌手的版权。而且&#xff0c;由于很多内容都需要付费&#xff0c;我们也无法随心…