随笔 - 383  文章 - 0  评论 - 0  阅读 - 35557 

1. 说明

 做数据挖掘常常需要抓取网页内容,有些工具能通过分析url中的链接,把整个网站抓下来,也就是我们常说的爬虫工具。

 有时候需要把交互网页的内容抓下来,比如:在input框中输入想查的内容,服务器端实时计算结果,或者从数据库中查询后返回结果。像整句翻译功能,查询食物的热量等等。下面介绍Python用GET和POST方式抓取实时内容的方法。

2. GET方式

 GET方式把要查询的参数放在url地址中,非常简单。下例用Python程序,查询运单信息,写法如下:

import urllib.request  
  
url = 'http://cha.xxx.cn/?stype=kd&q=123456'
req = urllib.request.Request(url)  
html = urllib.request.urlopen(req).read()
print(html.decode("utf8"))
import urllib.request  
  
url = 'http://cha.xxx.cn/?stype=kd&q=123456'
req = urllib.request.Request(url)  
html = urllib.request.urlopen(req).read()
print(html.decode("utf8"))

 GET方式,用问号和等号“addr?key=value”的方式,以明文的方式,向服务器传送要查询的内容。此时,就能打印出html网页的内容了。由此可见python的网络工具真的很方便。

 有时候需要查询一些中文信息,比如查询樱桃的卡路里,需要字换中文字符,可使用以下方法:

#-*- coding:utf-8 -*-

import urllib.request  
import urllib.parse  
  
url = "http://www.xxx.com/food/search"
postdata = urllib.parse.urlencode({  
    "keyword":"樱桃"  
}).encode("utf-8")
req = urllib.request.Request(url,postdata)  
html = urllib.request.urlopen(req).read()
print(html.decode("utf8"))
#-*- coding:utf-8 -*-

import urllib.request  
import urllib.parse  
  
url = "http://www.xxx.com/food/search"
postdata = urllib.parse.urlencode({  
    "keyword":"樱桃"  
}).encode("utf-8")
req = urllib.request.Request(url,postdata)  
html = urllib.request.urlopen(req).read()
print(html.decode("utf8"))

3. POST方式

 POST方法相对复杂一些,常用它传送用户名,密码等不可见的参数,使用它的主要问题是:不知道程序定义的关键字key是什么。一般可以通过查看页源码,看它表单的input中如何定义,但有时候源码中调用其它程序实现,不能直接看到关键字,下面介绍如何使用浏览器提供的工具,查看本地与服务器的交互信息,以确定关键字。

 在浏览器中打开翻译网站(最好使用chrome或chromium),按F12打开调试工具。选择其中的Netword选项卡。

 在输入框中输入要翻译的内容“樱桃”,点“翻译”按钮时,查看调试工具中最核心的步骤是检测当前语言”langdetect”和翻译”v2transapi”,点击该项,即可以查看请求的具体内容和返回值。以检测当前语言为例,其中请求内容中就有其request url(http://fanyi.baidu.com/langdetect),以及关键字(post参数query)。把它们设置在Python中即可,具体方法如下:

# coding:utf-8  

import requests

url = "http://fanyi.xxx.com/langdetect" 
d = {"query":"樱桃"}
r = requests.post(url, data=d)
print(r.text)   
# coding:utf-8  

import requests

url = "http://fanyi.xxx.com/langdetect" 
d = {"query":"樱桃"}
r = requests.post(url, data=d)
print(r.text)   

 此时,返回的是json串,数据少容易解析。

4. 参考

 Python网络爬虫(Get、Post抓取方式)
https://blog.csdn.net/fly_yr/article/details/49005033

posted on   xieyan0811  阅读(17)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示