关键词

python简单爬虫–get方式详解

Python简单爬虫——GET方式详解

概述

爬虫是一个广义的名词,涵盖了很多不同的技术。通常来说,爬虫是自动化获取网页数据的程序,被用于数据挖掘、搜索引擎、数据分析以及机器学习等领域。本文将介绍Python中的一种简单的爬虫技术——GET方式。

爬虫原理

GET是HTTP协议中常用的一种请求方式,通常用于获取或查询资源。当我们在浏览器中输入一个URL时,浏览器就会使用GET方式来向服务器请求数据。Python中的requests库可以模拟浏览器并发送GET请求获取数据,并且还提供了一些便捷的方法来获取特定的信息。

爬虫步骤

要完成一个简单的爬虫,我们需要完成以下几个步骤:

  1. 确定目标网站
  2. 分析目标网站的结构和需要获取的信息
  3. 使用requests库发送GET请求获取网页数据
  4. 使用解析库如BeautifulSoup来解析网页数据,提取所需信息
  5. 存储数据

下面是一个完整的示例,我们将使用GET方式爬取豆瓣电影Top250的数据,并提取电影名称、评分以及评分人数。

爬取豆瓣电影Top250

获取网页数据

import requests

url = 'https://movie.douban.com/top250'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
html_content = response.text

首先,我们需要使用requests库发送GET请求获取豆瓣电影Top250的网页数据。这里我们指定了请求的URL和请求头(User-Agent),以便模拟浏览器。获取到的网页数据存储在html_content变量中。

注意:有些网站会禁止爬虫。在实际应用中,建议使用代理IP、设置访问延时等方式来减小被封号的风险。

解析网页数据

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'html.parser')
movies = soup.select('div.item')
for movie in movies:
    title = movie.select_one('span.title').text.strip()
    rating_num = movie.select_one('span.rating_num').text.strip()
    comment_num = movie.select('div.star span')[3].text.strip()
    print(title, rating_num, comment_num)

接下来,我们使用BeautifulSoup库来解析网页数据,提取豆瓣电影Top250的电影名称、评分以及评分人数。我们使用CSS选择器来定位需要的元素,并使用text.strip()方法来获取去除空格和换行符的文本内容。

存储数据

我们可以将获取到的数据存储到本地文件,或者存储到数据库中。这里我们将简单的将数据打印到控制台上。

示例2:爬取天气预报

下面是另一个示例,我们将使用GET方式爬取中国天气网的天气预报数据,并提取所在城市、天气情况、气温等信息。

import requests
from bs4 import BeautifulSoup

url = 'http://www.weather.com.cn/weather/101010100.shtml'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
html_content = response.content.decode('utf-8')

soup = BeautifulSoup(html_content, 'html.parser')
weather_info = soup.select_one('input#hidden_title')['value']
location, weather, temperature = weather_info.split(',')[0], weather_info.split(',')[1], weather_info.split(',')[4]
print(location, weather, temperature)

首先,我们需要使用requests库发送GET请求获取中国天气网的网页数据。由于中国天气网返回的是GBK编码的数据,所以我们需要将其转换为UTF-8编码的字符串。然后,我们使用BeautifulSoup库来解析网页数据,提取所在城市、天气情况、气温等信息。我们使用CSS选择器来定位需要的元素,并使用['value']方法来获取input元素的value属性。

结语

GET方式虽然简单,但是对于很多网站来说已经足够。如果要爬取的数据包含在POST请求中或者需要动态加载,可以考虑使用其他的爬虫技术。另外,在实际应用中,还需要考虑网站是否允许爬虫、反爬虫策略等问题。

本文链接:http://task.lmcjl.com/news/6701.html

展开阅读全文