Python网络爬虫实战:页面抓取、图片下载与IP查询详解
本文通过五个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("爬取失败")
以上即为本文介绍的全部内容,希望这些示例能对您的学习有所帮助。如果您觉得有用,欢迎支持本站,获取更多技术资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









