使用 Python3 获取网页源代码

        爬虫的数据爬取量非常大,显然不可能对每个页面都手动复制源代码,因此就有必要使用自动化的方式来获取网页源代码。requests是Python的一个第三方HTTP(Hypertext Transfer Protocol,超文本传输协议)库,它比Python自带的网络库urllib更加简单、方便和人性化。使用requests可以让Python实现访问网页并获取源代码的功能。使用requests获取网页的源代码,最简单的情况下只需要两行代码:

      #使用requests获取源代码import requestssource = requests.get('https://www.baidu.com').content.deocde()

一、Python的第三方库

        在Python开发的过程中,常常需要将一些功能比较通用的代码抽离出来作为一个单独的模块,从而被多个工程调用。这种公共的模块称为Python的库(Library,Lib)。Python在发布时会自带一些由官方开发的常用的库,例如正则表达式“re”、时间“time”等。这些库称为“官方库”。而由非官方发布的库,则称为“第三方库”。Python之所以如此强大,正是由于它拥有非常多的第三方库。使用第三方库,可以轻易实现各种各样的功能。以获取网页内容为例,Python其实自带了两个模块,分别是urllib和urllib2。使用这两个模块也可以获取网页内容。但是这两个模块使用起来非常麻烦。而requests这个第三方库,让获取网页内容变得极其简单。requests这个库的作者给这个库取了一个副标题“HTTP for humans”,直接翻译过来就是“这才是给人用的HTTP库”。

        Python的第三方库需要手动安装。如果系统只有一个Python版本,那么手动安装第三方库时需要在Mac OS/Linux的终端或者Windows的CMD中执行以下命令:

pip install第三方库的名字

        需要注意的是,如果系统同时有Python 2和Python 3,并且Python 3是后安装的,那么要为Python 3安装第三方库,就需要使用如下命令:

pip3 install第三方库的名字

        安装完第三方库以后,就可以在Python中使用了。使用第三方库,就像使用Python自带的库一样,首先需要使用“import”关键字将它导入,然后才能使用。还有一点需要特别强调,开发者自己写的.py文件的名字绝对不能和Python自带的模块或者已经安装的第三方库的名字相同,否则会产生问题。例如,内容涉及requests和正则表达式,那么开发在测试代码的时候绝对不能自行创建名为“requests.py”或者“re.py”的文件官方的或第三方库名字一样。一旦创建,代码必定报错。

二、requests介绍与安装

        使用pip安装requests,代码如下:

pip install requests

        pip在线安装时可能会受到防火墙的干扰,因此也可以使用源代码安装。打开网页https://github.com/kennethreitz/requests,单击“Clone or download”按钮,再单击“Download ZIP”按钮下载源代码,如图所示。

        解压源代码,找到setup.py,并打开CMD窗口或者终端,在放置这个setup.py文件的文件夹中执行以下代码:

python3 setup.py install

         安装完成以后打开CMD或者终端,进入Python交互环境,输入以下代码

>>>import requests

        如果不报错,则表示requests已经成功安装,如图所示:

 

 

三、使用requests获取网页源代码

        使用浏览器来访问网页,看起来只需要输入网址就可以。但其实网页有很多种打开方式,最常见的是GET方式和POST方式。在浏览器里面可以直接通过输入网址访问的页面,就是使用了GET方式。还有一些页面,只能通过从另一个页面单击某个链接或者某个按钮以后跳过来,不能直接通过在浏览器输入网址访问,这种网页就是使用了POST方式。

1.GET方式

        对于使用GET方式的网页,在Python里面可以使用requests的get()方法获取网页的源代码:

import requests
html = requests.get(’网址’)
html_bytes = html.content
html_str = html_bytes.decode()

        在这4行代码中,第1行导入了requests库,这样代码里面才能使用。第2行使用GET方法获取了网页,得到一个Response对象。此时如果直接打印HTML变量,得到的是:

<Response [200]>

        第3行使用.content这个属性来显示bytes型网页的源代码。第4行代码将bytes型的网页源代码解码为字符串型的源代码。对于上面的4行代码,可以将后3行合并,缩减为两行代码:

import requests
html_str = requests.get(’网址’).content.decode()

        之所以需要把bytes型的数据解码为字符串型的数据,是因为在bytes型的数据类型下,中文是无法正常显示的。这个“解码”对应的英文为“decode”,因而我们需要使用.decode()这个方法。

html = requests.get(’网址’).content.decode('GBK')
html = requests.get(’网址’).content.decode('GB2312')
html = requests.get(’网址’).content.decode('GB18030')

        编码格式有几十种,但最常见的是“UTF-8”“GBK”“GB2312”和“GB18030”。具体使用哪一种编码格式,需要根据实际情况来选择。大多数情况下使用“UTF-8”,但也有一些网站会使用“GBK”或者“GB2312”。可以每一种编码格式都测试一下,通过打印出网页的源代码,查看里面的中文是否显示正常,以中文可以正常显示为准。

2.POST方式网页的访问方式

        除了GET方式以外,还有POST方式。有一些网页,使用GET和POST方式访问同样的网址,得到的结果是不一样的。还有另外一些网页,只能使用POST方式访问,如果使用GET方式访问,网站会直接返回错误信息。

        此时就需要使用requests的post()方法来获取源代码。post()方法的格式如下:

import requests
data = {'key1': 'value1','key2': 'value2'}
html_formdata = requests.post(’网址’, data=data).content.decode()
#用formdata提交数据

        其中,data这个字典的内容和项数需要根据实际情况修改,Key和Value在不同的网站是不一样的。而做爬虫,构造这个字典是任务之一。还有一些网址,提交的内容需要是JSON格式的,因此post()方法的参数需要进行一些修改:

html_json = requests.post(’网址’, json=data).content.decode() 
#使用JSON提交数据

        这样写代码,requests可以自动将字典转换为JSON字符串。

四、结合requests与正则表达式

        以GET方式为例,通过requests获得了网页的源代码,就可以对源代码字符串使用正则表达式来提取文本信息。

        现在需要把标题和两段中文提取下来,可以通过正则表达式来实现。

1、 提取标题。

title = re.search(‘title>(.*? )<', html, re.S).group(1)

2、提取正文,并将两段正文使用换行符拼接起来。

content_list = re.findall(‘p>(.*? )<', html, re.S)
content_str = ‘\n'.join(content_list)

--------------------------------------

版权声明:本文为【PythonJsGo】博主的文章,同步在【猿小猴子】公众号平台,转载请附上原文出处链接及本声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255686.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

html页面内容查找代码,网页源代码查看

怎么看一个网站的源代码,网页源代码怎么看 制作网页除了需要自己不断的灵感源泉,更需要借鉴前人们的经验和宝贵资源,平时多看别人的作品来丰富自己的知识库是十分好的方法,那我们怎么来借鉴别人的作品呢?当然是看别人的页面源代码了。互联网发展如此迅速。 如何查看一个网…

网页源代码查看竟然有这么多方法!你都知道吗?

当我们在浏览网页的时候&#xff0c;看到喜欢的网页&#xff0c;总想研究下它的代码是怎样写的&#xff0c;值得借鉴参考来修改自己的网站源码。你知道如何查看网页源代码吗&#xff1f; 网页源代码是什么&#xff1f; 网站源码&#xff0c;也称源代码&#xff0c;源程序&…

OpenWRT 实现Exsi8单个公网ip管理与访问

一台Dell R720机器 内存256G(64G*4)硬盘SSD 8T(1T*8)搭建了一个裸金属k8s集群(对比阿里云单台4核8G的费用不相上下) 机房上架提供了一个公网ip 需要一个公网ip能实现exsi虚拟机管理 又可以让虚拟机实现web访问 是终通过OpenWRT实现 OpenWRT实现步骤 1、官网访问并下载img镜…

Ubuntu 一键美化

新建一个setup.sh&#xff0c;以管理员权限安装 #!/bin/bash echo "" echo "#######################################################################" echo "# Start to configurate! #" ec…

蓝桥ROS中使用fishros一键安装

之前&#xff0c;提供如下方式解决更新问题&#xff1a; ROS域名解析问题记录&#xff08;蓝桥云课ros.asc&#xff09; 口碑很赞的fishros一键安装是否可以呢&#xff1f; 试一试看&#xff1a; 先调整一下分辨率&#xff0c;如下&#xff1a; fishros&#xff1a; mkdir -…

CF 云环境利用框架,一键化利用云上内网

前言 当我们平时拿到云服务的访问凭证即 Access Key 时&#xff0c;通常的做法可能是看下对方的 OSS 对象存储、或者在实例上执行个命令&#xff0c;但 AK 的利用远不止这些&#xff0c;通过 AK 我们可以做太多太多的事情&#xff0c;为了方便 AK 的利用&#xff0c;于是有了这…

python免费 爬取原创力文档并转换成pdf(部分版)

python爬取原创力文档并且保存为pdf文件&#xff08;部分版保姆级 文章目录 *python爬取原创力文档并且保存为pdf文件*&#xff08;部分版保姆级 前言一、爬取背景&#xff1f;二、正&#xff08;bai&#xff09;式&#xff08;piao&#xff09;操作1.安装库2.导入项目所需库3.…

java将json字符串转换成json数组

有些时候我们需要将json字符串转换成数组&#xff0c;并且只取一些属性值进行下一个方法的赋值&#xff0c;这样就涉及到了json字符串的转换了&#xff0c; json字符串有两种形式&#xff0c;一种是以{A,B,C}&#xff0c;一种是[{A},{B},{C}]。但是很多时候是这两种的结合。 …

js 数组、对象转json 以及json转 数组、对象

js 数组、对象转json 以及json转 数组、对象 1、JS对象转JSON 方式&#xff1a;JSON.stringify(obj) var json {"name":"iphone","price":666}; //创建对象&#xff1b; var jsonStr JSON.stringify(json); //转为JSON字符串 console.lo…

数组和JSON之间的格式转换

数组和JSON之间的格式转换 主要代码&#xff1a; const a JSON.stringify(jsonStrings) //object转jsonconst c JSON.parse(a) //json转object标志性代码&#xff1a; const jsonStrings [1, 2, 3]// {"bar": "property", "baz": 3}cons…

如何将JSONArray转为String数组

这里我们讲得JSONArray是阿里巴巴的fastjson 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>直接上代码吧&#xff0c;并不复杂 public static …

手把手教你升级车载导航

【维保】手把手教你升级车载导航 车主档案 车主&#xff1a;深蓝网事 车系&#xff1a;15款新明锐1.4T逸俊版 城市规划每天都在紧张的进行着。 高速公路到达收费年限以后也会在继续修建然后接着收费。 自驾游的时候&#xff0c;面对比较另类的交叉路口不知道怎么走。 总结起来…

如何修复iPhone出现的白苹果问题

iPhone出现白苹果问题&#xff0c;这需要对手机进行系统修复&#xff0c;我们可以带着手机去苹果直营店解决问题&#xff0c;或者也可以自己在家使用iTunes进行恢复操作&#xff08;数据可能会被擦除&#xff09;或者也可以用第三方软件进行解决&#xff0c;我们以奥凯丰 苹果修…

短信恢复 android,苹果手机短信恢复:安卓+苹果手机短信恢复教程,必须收藏!...

原标题&#xff1a;苹果手机短信恢复&#xff1a;安卓苹果手机短信恢复教程&#xff0c;必须收藏&#xff01; 手机短信怎么恢复&#xff1f;日常生活中&#xff0c;大家或多或少会不小心把删除一些不必要的短信&#xff0c;比如注册某软件的验证码的短信&#xff0c;面试通知地…

苹果系统自带的计算机怎么恢复出厂设置,苹果电脑恢复出厂化设置的教程_苹果电脑怎样恢复出厂系统-win7之家...

在使用苹果电脑的时候&#xff0c;可能因为一些原因导致电脑出现系统崩溃或者无法正常启动的故障&#xff0c;很多用户可能会通过重置系统来解决&#xff0c;其实我们可以使用自带的恢复出厂功能来进行恢复&#xff0c;那么苹果电脑怎样恢复出厂系统呢&#xff1f;针对这个问题…

苹果电脑教程之退出ID账号

我们使用mac有时需要登录id账号来使用一些软件&#xff0c;使用完毕之后&#xff0c;一些朋友就会选择退出&#xff0c;可是有的朋友留言找了好久都没找到退出的方法&#xff0c;本期我们就来看看如何退出mac的id账号。 具体方法如下 1.在苹果电脑的系统偏好设置页面&#xf…

苹果cms大橙子和B站模板教程

介绍&#xff1a; 苹果cms大橙子和B站模板更新简介&#xff1a; 1、优化旧版本主题 2、优化首页和列表页采集 3、修复尝鲜分页尾页问题 4、修复历史记录标题过长换行问题 5、修复接口 6、修复广告位弹窗问题 安装步骤&#xff1a; 源码上传至虚拟机或者服务器 访问域名/instal…

Node.js 中的代码调试

目录 1、启用 Inspector 2、安全隐患 3、Inspector 客户端 4、启用远程调试的情形 5、以前的Debugger 1、启用 Inspector 当使用 --inspect 开关时&#xff0c;Node.js 进程开始侦听调试客户端&#xff0c;默认情况下侦听 127.0.0.1:9229 的域名和端口号&#xff1b;每个…

苹果CMS海螺模板4.0修复版带后台 附安装教程

介绍&#xff1a; 注&#xff1a;海螺主题前身是原正版爱看模板&#xff0c;因爱看关键词被盗版抢因此更名海螺主题 这是一款带“模板后台管理系统&#xff0c;功能最全的苹果CMSv10模板”&#xff0c;也许很多功能并不常用但等你用到的时候才能体会它的精妙&#xff0c;颠覆以…

mac苹果系统数据恢复软件恢复苹果电脑硬盘数据教程

很多人用Windows系统的电脑用顺手了&#xff0c;由于工作等原因不得不换成苹果电脑&#xff0c;就感觉苹果电脑的Mac系统用起来非常不顺畅。有时甚至还会进行一些误操作&#xff0c;比如不小心删除了重要的文件、不小心抹掉了磁盘等等。这些操作会导致苹果电脑硬盘上重要的数据…