python

导航

python写爬虫难吗

来源 :中华考试网 2020-10-16

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

分享到

相关资讯