网页中flash数据抓取( 静态网页就是纯粹格式的网页是怎么获取的呢?)
优采云 发布时间: 2022-01-17 13:08网页中flash数据抓取(
静态网页就是纯粹格式的网页是怎么获取的呢?)
一、静态网页抓取简介
静态网页是纯 HTML 格式的网页。早期的 网站 是由静态网页组成的。静态网页的数据更容易获取,因为我们需要的代码隐藏在 HTML 代码中。为了抓取静态网页,我们使用 requests 库。Requests 允许您轻松发送 HTTP 请求。该库使用简单,功能齐全。
二、获取响应内容
获取响应内容的过程相当于使用浏览器的过程。我们在浏览器中输入URL,浏览器会向服务器请求内容,服务器会返回HTML代码,浏览器会自动解析代码。我们的爬虫和浏览器发送请求的过程是一样的,就是通过requests向浏览器发送请求,获取请求内容。
import requests
# 发送请求,获取服务器响应内容
r = requests.get("http://www.santostang.com/")
print("文本编码:", r.encoding)
print("响应状态码:", r.status_code)
print("字符串方式的响应体:", r.text)
三、自定义请求
我们使用requets发送请求获取数据,但是有些网页需要设置参数来获取需要的数据,那么我们设置这些参数
1. 传递 URL 参数
有时我们需要在 URL 中添加一些参数来请求特定的数据。URL中加参数的形式是在问号之后,以key/value的形式放在URL中。我们可以将参数保存在字典中,并将参数构建到 URL 中。
key_dict = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://httpbin.org/get', params=key_dict)
print("URL已经正确编码:", r.url)
print("字符串方式的响应体:\n", r.text)
2. 自定义请求标头
请求标头是 Headers 部分,标头提供有关请求、响应或其他发送请求的实体的信息。简单来说就是模拟浏览器的作用,所以请求头是必须要学习的,那么我们如何构造请求头,我们使用谷歌浏览器。可以点击鼠标右键,点击Check,然后看下图,可以找到请求需要的参数。
# 构建请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Host': 'www.santostang.com'
}
r = requests.get("http://www.santostang.com/", headers=headers)
print("响应状态码:", r.status_code)
响应状态码: 200
3. 发送 POST 请求
除了get请求之外,还需要以编码格式的形式发送一些数据,有些网站需要登录才能访问,所以我们需要使用POST请求,我们还需要传递一个字典到请求中的数据参数。发出请求时,此数据字典将自动编码到表单中。
key_dict = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('http://httpbin.org/post', data=key_dict)
print(r.text)
4. 超时
有时候我们发送一个请求,服务器会很长时间没有响应,爬虫会一直等待。如果爬虫程序执行不流畅,可以使用requests在超时参数设置的秒数后停止等待响应。我们将其设置为 0.001 秒。
url = "http://www.santostang.com/"
r = requests.get(url, timeout=0.001)
ConnectTimeout: HTTPConnectionPool(host='www.santostang.com', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(, 'Connection to www.santostang.com timed out. (connect timeout=0.001)'))
四、项目实例
爬豆瓣前250名电影名
# 导入包
import requests
from bs4 import BeautifulSoup
# 发送请求,获取响应内容
def get_movies():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Host': 'movie.douban.com'
}
movie_list = []
for i in range(0, 10):
# 构建url,发送请求
url = "https://movie.douban.com/top250?start={}" + str(i * 25)
r = requests.get(url, headers=headers, timeout=10)
print(str(i + 1), "页面响应状态:", r.status_code)
# 解析网页
soup = BeautifulSoup(r.text, "lxml")
div_list = soup.find_all('div', class_= 'hd')
for each in div_list:
movie = each.a.span.text.strip()
movie_list.append(movie)
return movie_list
movies = get_movies()
print(movies)
总结:本篇笔记主要学习爬取静态网页时如何发送请求,包括url参数的设置方法。最后,实现一个小案例。