用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简单线程和协程学习心得(分享)
Jun 14 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
对Django中内置的User模型实例详解
Aug 16 Python
python 命令行传入参数实现解析
Aug 30 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
python 实现aes256加密
Nov 27 Python
利用Python实现Picgo图床工具
Nov 23 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
Django Aggregation聚合使用方法解析
2019/08/01 Python
简单分析python的类变量、实例变量
2019/08/23 Python
浅析Python 多行匹配模式
2020/07/24 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
介绍下java.util.Arrays类
2012/10/16 面试题
档案室主任岗位职责
2014/02/12 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
电工实训报告总结
2014/11/05 职场文书
党员年度个人总结
2015/02/14 职场文书
材料员岗位职责范本
2015/04/11 职场文书
课程设计感想范文
2015/08/11 职场文书