用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绘制数据的瀑布图的教程
Apr 07 Python
python对象及面向对象技术详解
Jul 19 Python
Django实现快速分页的方法实例
Oct 22 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
python中eval与int的区别浅析
Aug 11 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
php自动加载方式集合
2016/04/04 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
numpy 声明空数组详解
2019/12/05 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python类型转换的魔术方法详解
2020/12/23 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
SQL面试题
2013/04/30 面试题
农村婚礼证婚词
2014/01/10 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
cf战队收人口号
2014/06/21 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB