用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检测远程端口是否打开的方法
Mar 14 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
django2笔记之路由path语法的实现
Jul 17 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
简单了解python协程的相关知识
Aug 31 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python实现代码统计工具
Sep 19 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 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(3)
2006/10/09 PHP
php+javascript的日历控件
2009/11/19 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
求职信模板怎么做
2014/01/26 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
期中考试复习计划
2015/01/19 职场文书
个人承诺书格式范文
2015/04/29 职场文书
朋友聚会开场白
2015/06/01 职场文书
四风之害观后感
2015/06/09 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers