网页中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参数的设置方法。最后,实现一个小案例。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线