用python写爬虫简单吗

作者:silencement 时间:2024-01-02 08:03:26 

所谓网络爬虫,通俗的讲,就是通过向我们需要的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

来源:https://www.py.cn/spider/guide/14788.html

标签:python,爬虫
0
投稿

猜你喜欢

  • 解密SQL Server数据库系统的编译

    2009-03-16 17:33:00
  • Python数据提取-lxml模块

    2022-04-03 15:15:19
  • 对python的unittest架构公共参数token提取方法详解

    2023-10-18 12:28:54
  • 关于Golang中for-loop与goroutine的问题详解

    2024-04-29 13:03:16
  • Hadoop分布式集群的搭建的方法步骤

    2022-06-08 06:02:42
  • sqlserver 触发器学习(实现自动编号)

    2024-01-24 23:03:33
  • 详解如何在Linux(CentOS)下重置MySQL根(Root)密码

    2024-01-14 08:35:27
  • numpy的Fancy Indexing和array比较详解

    2022-05-12 23:31:46
  • python绘制直线的方法

    2022-10-08 20:01:52
  • python操作redis的方法

    2021-03-27 05:14:03
  • 四行Python3代码实现图片添加美颜效果

    2021-01-25 10:29:30
  • python爬取网易云音乐排行榜实例代码

    2023-07-24 09:26:52
  • Python深度学习TensorFlow神经网络基础概括

    2022-08-13 02:57:18
  • 关于useSSL=false和true的区别及说明

    2024-01-25 03:27:40
  • mysql 插入优化

    2010-12-14 15:29:00
  • 使用Python更换外网IP的方法

    2021-01-25 04:25:46
  • PHPCMS的使用小结

    2023-11-20 20:19:47
  • Django 设置admin后台表和App(应用)为中文名的操作方法

    2023-01-31 13:37:54
  • python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解

    2023-11-06 02:16:54
  • python实现AES加密与解密

    2022-12-08 08:18:40
  • asp之家 网络编程 m.aspxhome.com