网络抓取初步
网络爬虫初步
- 透过requets获取网络数据
- API
例子httpcat API使用
httpcat是个有趣的免费API,根据输入的http status code,返回一张cat图片
#https://httpcats.com/[http_status_code].jpg
import requests
# Set the URL of the image you want to download
url = "https://httpcats.com/404.jpg"
# Send a GET request to the URL and get the response
response = requests.get(url)
# Get the content of the response (i.e., the image data)
image_data = response.content
# Save the image to a file
with open("cat.jpg", "wb") as file:
file.write(image_data)
# Open the image file
image = Image.open("cat.jpg")
# Display the image
image.show()
当客户端向服务器发送请求时,服务器会返回一个状态码来指示请求的处理结果。以下是一些常见的HTTP状态码的列表:
1xx(信息性状态码):这些状态码表示服务器已经收到了请求并正在继续处理它。例如:
100(继续):服务器已经收到了请求头部,客户端应该继续发送请求主体。
101(切换协议):服务器正在更改协议,例如从HTTP到WebSocket。
2xx(成功状态码):这些状态码表示服务器已经成功接收、理解和处理了请求。例如:200(成功):请求已成功处理。 201(已创建):请求已成功处理,并创建了一个新的资源。
204(无内容):请求已成功处理,但没有内容返回。 3xx(重定向状态码):这些状态码表示客户端必须采取其他操作才能完成请求。例如:301(永久移动):请求的资源已永久移动到一个新的URL。 302(临时移动):请求的资源已在不同的URL找到,但位置可能是临时的。
304(未修改):客户端缓存的资源副本仍然有效。 4xx(客户端错误状态码):这些状态码表示客户端在请求中出现了错误。例如:400(错误请求):由于语法格式不正确,服务器无法理解请求。 401(未经授权):客户端必须进行身份验证才能获取所请求的响应。
403(禁止访问):客户端没有访问内容的权限。 5xx(服务器错误状态码):这些状态码表示服务器在处理请求时遇到了错误。例如:500(服务器内部错误):服务器遇到了意外的条件,阻止它完成请求。 502(错误网关):服务器作为网关或代理时从上游服务器收到了无效的响应。
503(服务不可用):服务器当前由于临时超载或维护而无法处理请求。
拓展练习:
增加用户输入
根据输入获取对应的图片,用该输入命名图片文件,比如404.jpg, 101.jpg 等等
import requests
from PIL import Image
http_status_code = 101
http_status_code = input('Input 3 digits HTTP STATUS CODE(like 101, 404 etc):')
# Set the URL of the image you want to download
url = f"https://httpcats.com/{http_status_code}.jpg"
# Send a GET request to the URL and get the response
response = requests.get(url)
# Get the content of the response (i.e., the image data)
image_data = response.content
# Save the image to a file
with open(f"{http_status_code}.jpg", "wb") as file:
file.write(image_data)
# Open the image file
image = Image.open(f"{http_status_code}.jpg")
# Display the image
image.show()
另外更高阶的话题,可以使用selenium实现网络访问自动化
使用selenium我实现了一个自动抓取网络数据的小工具
补充材料
Extra Topic 网络数据抓取
网络爬虫是一种自动化程序,用于从互联网上收集信息。它模仿人类在浏览器中浏览网页的行为,通过访问网站并提取感兴趣的数据。
使用Python编写网络爬虫非常方便,你可以使用Python中的一些库(例如Requests和Beautiful Soup)来帮助你完成这个任务。下面是一个简单的步骤指南,帮助你了解如何使用Python来从网站上提取数据:
1. 安装Python:首先,确保你的计算机上安装了Python编程语言。你可以从Python官方网站(https://www.python.org)上下载并安装最新版本的Python。
2. 安装所需的库:在Python中,有一些非常有用的库可以帮助你进行网络爬虫。其中两个常用的库是Requests和Beautiful Soup。你可以使用以下命令在终端或命令提示符中安装它们:
pip install requests
pip install beautifulsoup4
导入所需的库:在你的Python代码中,首先导入这些库,以便你可以使用它们的功能。例如:
import requests
from bs4 import BeautifulSoup
发起HTTP请求:使用Requests库,你可以发送HTTP请求以获取网页的内容。你可以使用以下代码发送一个简单的GET请求:
response = requests.get('https://www.example.com')
这将返回一个包含响应内容的对象。
1. 解析网页内容:使用Beautiful Soup库,你可以解析网页的内容,以便提取你感兴趣的数据。你可以使用以下代码创建一个Beautiful Soup对象,并使用其功能来解析网页:
soup = BeautifulSoup(response.content, 'html.parser')
提取数据:通过分析网页的HTML结构,你可以使用Beautiful Soup提供的方法来提取数据。你可以使用标签名称、CSS选择器、类名等等来定位和提取数据。以下是一个简单的示例:
假设网页中有一个 标签,类名为 "content"div_element = soup.find('div', class_='content')
提取该 标签中的文本内容content = div_element.text
这是一个简单的例子,你可以根据网页的结构和你的需求来提取更多的数据。
这是一个初步的介绍,帮助你了解网络爬虫的概念以及如何使用Python从网站上提取数据。当你进一步学习和实践时,你会发现还有很多关于网络爬虫的技术和策略可以探索。记住,在使用网络爬虫时要遵守网站的使用规则和法律法规,确保
例子,抓取dazuicheng.com上博客文章
import requests
from bs4 import BeautifulSoup
# 发起HTTP请求获取网页内容
url = 'http://www.dazuicheng.com'
#url = 'http://www.dazuicheng.com/index.php/page/2/' # 要抓取的网站地址, next page
response = requests.get(url)
# 解析网页内容
soup = BeautifulSoup(response.content, 'html.parser')
# 提取博客文章
articles = soup.find_all('article')
# 打印博客文章标题和内容
for article in articles:
title = article.find('h2').text.strip()
content = article.find('div', class_='post-content').text.strip()
print('标题:', title)
print('内容:', content)
print('---')
- 上一篇: snake game using PyQt6
- 下一篇: Flask网络应用 - 天气应用
div_element = soup.find('div', class_='content')
提取该 标签中的文本内容content = div_element.text
这是一个简单的例子,你可以根据网页的结构和你的需求来提取更多的数据。
这是一个初步的介绍,帮助你了解网络爬虫的概念以及如何使用Python从网站上提取数据。当你进一步学习和实践时,你会发现还有很多关于网络爬虫的技术和策略可以探索。记住,在使用网络爬虫时要遵守网站的使用规则和法律法规,确保
例子,抓取dazuicheng.com上博客文章
import requests
from bs4 import BeautifulSoup
# 发起HTTP请求获取网页内容
url = 'http://www.dazuicheng.com'
#url = 'http://www.dazuicheng.com/index.php/page/2/' # 要抓取的网站地址, next page
response = requests.get(url)
# 解析网页内容
soup = BeautifulSoup(response.content, 'html.parser')
# 提取博客文章
articles = soup.find_all('article')
# 打印博客文章标题和内容
for article in articles:
title = article.find('h2').text.strip()
content = article.find('div', class_='post-content').text.strip()
print('标题:', title)
print('内容:', content)
print('---')
content = div_element.text
这是一个简单的例子,你可以根据网页的结构和你的需求来提取更多的数据。
这是一个初步的介绍,帮助你了解网络爬虫的概念以及如何使用Python从网站上提取数据。当你进一步学习和实践时,你会发现还有很多关于网络爬虫的技术和策略可以探索。记住,在使用网络爬虫时要遵守网站的使用规则和法律法规,确保
例子,抓取dazuicheng.com上博客文章
import requests
from bs4 import BeautifulSoup# 发起HTTP请求获取网页内容
url = 'http://www.dazuicheng.com'
#url = 'http://www.dazuicheng.com/index.php/page/2/' # 要抓取的网站地址, next page
response = requests.get(url)# 解析网页内容
soup = BeautifulSoup(response.content, 'html.parser')# 提取博客文章
articles = soup.find_all('article')# 打印博客文章标题和内容
for article in articles:title = article.find('h2').text.strip() content = article.find('div', class_='post-content').text.strip() print('标题:', title) print('内容:', content) print('---')
- 上一篇: snake game using PyQt6
- 下一篇: Flask网络应用 - 天气应用