用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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
python3音乐播放器简单实现代码
Apr 20 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
Python实现的建造者模式示例
Aug 06 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
Python基于template实现字符串替换
Nov 27 Python
python中pickle模块浅析
Dec 29 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
PHP实现简易计算器功能
2020/08/28 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python中的元类编程入门指引
2015/04/15 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
python实现随机漫步方法和原理
2019/06/10 Python
django认证系统 Authentication使用详解
2019/07/22 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
仓库管理制度
2014/01/21 职场文书
运动会通讯稿100字
2014/01/31 职场文书
起诉状范本
2015/05/20 职场文书
聘任书的格式及模板
2019/10/28 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS