用python写爬虫简单吗


Posted in Python onJuly 28, 2020

所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息。

下面是一个简单的爬虫程序

http基本知识

当我们通过浏览器访问指定的URL时,需要遵守http协议。本节将介绍一些关于http的基础知识。

http基本流程

我们打开一个网页的过程,就是一次http请求的过程。这个过程中,我们自己的主机充当着客户机的作用,而充当客户端的是浏览器。我们输入的URL对应着网络中某台服务器上面的资源,服务器接收到客户端发出的http请求之后,会给客户端一个响应,响应的内容就是请求的URL对应的内容,当客户端接收到服务器的响应时,我们就可以在浏览器上看见请求的信息了。

我们可以通过python的requests模块很方便的发起http请求。requests模块是第三方模块,安装完成之后直接import就能使用。下面介绍一些简单的用法

发起请求

import requests
# 请求的首部信息
headers = {
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
  Chrome/65.0.3325.146 Safari/537.36'
}
# 例子的url
url = 'https://voice.hupu.com/nba' # 虎扑nba新闻
# 利用requests对象的get方法,对指定的url发起请求
# 该方法会返回一个Response对象
res = requests.get(url, headers=headers)
# 通过Response对象的text方法获取网页的文本信息
print(res.text)

上面的代码中,我们向虎扑的服务器发送了一个get请求,获取虎扑首页的nba新闻。headers参数指的是http请求的首部信息,我们请求的url对应的资源是虎扑nba新闻的首页。获取到对应的网页资源之后,我们需要对其中的信息进行提取。

通过BeautifulSoup提取网页信息

BeautifulSoup库提供了很多解析html的方法,可以帮助我们很方便地提取我们需要的内容。我们这里说的BeautifulSoup指的是bs4。当我们成功抓取网页之后,就可以通过BeautifulSoup对象对网页内容进行解析。在BeautifulSoup中,我们最常用的方法就是find()方法和find_all()方法,借助于这两个方法,可以轻松地获取到我们需要的标签或者标签组。关于其他的方法,可以参考bs4的官方文档:BeautifulSoup

find()方法和find_all()方法的用法如下

find(name , attrs , recursive , string , **kwargs )
# find_all()方法将返回文档中符合条件的所有tag,
find_all(name , attrs , recursive , string , **kwargs )
from bs4 import BeautifulSoup
# BeautifulSoup对象接收html文档字符串
# lxml是html解析器
soup = Beautiful(res.text, 'lxml')
# 下面的方法找出了所有class为hello的span标签
# 并将所有的结果都放入一个list返回
tags = soup.find_all('span', {'class': 'hello'})

实例扩展:

实例一:

#第一种方法
import urllib2 #将urllib2库引用进来
response=urllib2.urlopen("http://www.baidu.com") #调用库中的方法,将请求回应封装到response对象中
html=response.read() #调用response对象的read()方法,将回应字符串赋给hhtml变量
print html #打印出来

实例二:

#第二中方法
import urllib2
req=urllib2.Request("http://ww.baidu.com")
response=urllib2.urlopen(req)
html = response.read()
print html

到此这篇关于用python写爬虫简单吗的文章就介绍到这了,更多相关python写爬虫难吗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python学习资料
Feb 08 Python
python k-近邻算法实例分享
Jun 11 Python
Python入门篇之文件
Oct 20 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
python如何去除字符串中不想要的字符
Jul 05 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
详解python实现交叉验证法与留出法
Jul 11 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
公认8个效率最高的爬虫框架
Jul 28 #Python
python如何爬取网页中的文字
Jul 28 #Python
Python同时处理多个异常的方法
Jul 28 #Python
Python远程方法调用实现过程解析
Jul 28 #Python
Python 实现一个计时器
Jul 28 #Python
python爬虫要用到的库总结
Jul 28 #Python
Python常用类型转换实现代码实例
Jul 28 #Python
You might like
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
python使用Matplotlib画饼图
2018/09/25 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
学校师德承诺书
2014/05/23 职场文书
教师工作决心书
2015/02/04 职场文书
成事在人观后感
2015/06/16 职场文书
运动会200米广播稿
2015/08/19 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
Python使用MapReduce进行简单的销售统计
2022/04/22 Python