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

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

本文通过五个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 相关产品和应用

全部下载

专题列表