Python网络爬虫实战:页面抓取、图片下载与IP查询详解

小满
小满
发布时间:2026-10-13| 3人浏览过
原创

本文通过五个Python代码实例,详解如何使用requests库进行网络爬虫开发。内容涵盖普通页面爬取、模拟浏览器请求规避限制、搜索引擎关键词抓取、图片保存以及IP地址归属地查询,提供完整代码与参数解析,帮助开发者快速掌握网络数据提取核心技巧。

Python网络爬虫基础与页面爬取

本节展示第一个实例,主要演示如何爬取普通网页内容。


import requests
url="https//itemjd.com/2646846.html"
try:
 r=requests.get(url)
 r.raise_for_status()
 r.encoding=r.apparent_encoding
 print(r.text[:1000])
except:
 print("爬取失败")

首先进行正常页面的爬取操作。通过构造URL并发送GET请求,可以获取目标网页的源代码。

接下来是第二个实例,继续演示页面爬取的基本流程,重点在于处理HTTP响应状态及编码设置。

模拟浏览器请求规避限制


import requests
url="https://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
 kv={'user-agent':'Mozilla/5.0'}
 r=requests.get(url,headers=kv)
 r.raise_for_status()
 r.encoding=r.apparent_encoding
 print(r.text[1000:2000])
except:
 print("爬取失败")

部分网站对访问用户名或请求头有限制,因此需要模拟浏览器行为。通过设置headers参数中的user-agent字段,可以伪装成正常浏览器请求,从而绕过简单的反爬机制。

第三个实例聚焦于爬取搜索引擎的结果页面。利用搜索引擎提供的关键词接口,可以动态构建查询URL并获取相关网页信息。

搜索引擎关键词抓取实现


#百度的关键词接口:http://www.baidu.com/s?wd=keyword
#360的关键词接口:http://www.so.com/s?q=keyword
import requests
keyword="python"
try:
 kv={'wd':keyword}
 r=requests.get("http://www.baidu.com/s",params=kv)
 print(r.request.url)
 r.raise_for_status()
 print(len(r.text))
except:
 print("爬取失败")
--------------------------------------------------
import requests
keyword="python"
try:
 kv={'q':keyword}
 r=requests.get("http://www.so.com/s",params=kv)
 print(r.request.url)
 r.raise_for_status()
 print(len(r.text))
except:
 print("爬取失败")

第四个实例演示如何爬取图片资源。这涉及到解析图片链接、构建本地存储路径以及处理文件写入操作。

图片资源爬取与本地保存


import requests
import os
url="http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
root="F://pics//"
path=root+url.split('/')[-1]
try:
 if not os.path.exists(root):
  os.mkdir(root)
 if not os.path.exists(path):
  r=requests.get(url)
  with open(path,'wb') as f:
   f.write(r.content)
   f.close()
   print("文件保存成功")
 else:
  print("文件已经存在")
except:
 print("爬取失败")

在爬取图片后,需要将其保存到本地磁盘。代码中会检查根目录是否存在,若不存在则创建目录,并判断目标文件是否已存在,避免重复下载,最后以二进制模式写入文件内容。

第五个实例展示了IP地址归属地查询功能。通过调用特定的IP查询接口,可以获取指定IP地址的详细信息。

查询接口通常遵循特定格式,例如http://m.ip138.com/ip.asp?ip=ipaddress,将目标IP地址拼接至URL参数中即可发起查询请求。

IP地址归属地查询接口调用


url="http://www.ip138.com/iplookup.asp?ip="
try:
 r=requests.get(url+'202.204.80.112'+'&action=2')
 r.raise_for_status()
 r.encoding=r.apparent_encoding
 print(r.text[-500:])
except:
 print("爬取失败")

以上即为本文介绍的全部内容,希望这些示例能对您的学习有所帮助。如果您觉得有用,欢迎支持本站,获取更多技术资源。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。