Python简单爬虫——GET方式详解
概述
爬虫是一个广义的名词,涵盖了很多不同的技术。通常来说,爬虫是自动化获取网页数据的程序,被用于数据挖掘、搜索引擎、数据分析以及机器学习等领域。本文将介绍Python中的一种简单的爬虫技术——GET方式。
爬虫原理
GET是HTTP协议中常用的一种请求方式,通常用于获取或查询资源。当我们在浏览器中输入一个URL时,浏览器就会使用GET方式来向服务器请求数据。Python中的requests
库可以模拟浏览器并发送GET请求获取数据,并且还提供了一些便捷的方法来获取特定的信息。
爬虫步骤
要完成一个简单的爬虫,我们需要完成以下几个步骤:
- 确定目标网站
- 分析目标网站的结构和需要获取的信息
- 使用
requests
库发送GET请求获取网页数据 - 使用解析库如
BeautifulSoup
来解析网页数据,提取所需信息 - 存储数据
下面是一个完整的示例,我们将使用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请求中或者需要动态加载,可以考虑使用其他的爬虫技术。另外,在实际应用中,还需要考虑网站是否允许爬虫、反爬虫策略等问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python简单爬虫–get方式详解 - Python技术站