用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 简单的多线程链接实现代码
Aug 28 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
python实现windows下文件备份脚本
May 27 Python
django DRF图片路径问题的解决方法
Sep 10 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
python中for in的用法详解
Apr 17 Python
django rest framework serializers序列化实例
May 13 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 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文件上传的例子及参数详解
2013/12/12 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
python和pyqt实现360的CLable控件
2014/02/21 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python 爬虫的工具列表大全
2016/01/31 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python实现图片转字符小工具
2019/04/30 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python猴子补丁知识点总结
2020/01/05 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
出纳工作岗位责任制
2014/02/02 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
公司离职证明范本
2014/10/17 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
整脏治乱工作简报
2015/07/21 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL