用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根据区号生成手机号码的方法
Jul 08 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
Python 音频生成器的实现示例
Dec 24 Python
通过实例解析Python return运行原理
Mar 04 Python
Python通过len函数返回对象长度
Oct 22 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 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
PHP出错界面
2006/10/09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
linux iconv方法的使用
2011/10/01 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
javascript实现的HashMap类代码
2014/06/27 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
四年的大学生生活自我评价
2013/12/09 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
村庄绿化方案
2014/05/07 职场文书
远程培训的心得体会
2014/09/01 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
Django框架中视图的用法
2022/06/10 Python