如何在“HTTP请求”中请求一个HTML页面,只提取特定的正则表达式或HTML标签?
在HTTP协议中,有没有什么方法或者头部信息可以让我从一个HTML资源中获取特定的标签?比如,我想在这个Python请求中只获取所有的标签,而不是整个HTML页面。有没有什么我可以在设置请求时做的事情,这在HTTP 1.1或1.0版本中是支持的?
import httplib
def printText(txt):
lines = txt.split('\n')
for line in lines:
print line.strip()
httpServ = httplib.HTTPConnection("www.google.com")
httpServ.connect()
httpServ.request('GET',"/search?q=blabla")
response = httpServ.getresponse()
if response.status == httplib.OK:
printText (response.read())
if response.status != httplib.OK:
print "NOT OK" , response.status
httpServ.close()
3 个回答
1
不行,你必须获取整个页面。HTTP协议并不支持按HTML元素下载部分页面。
1
虽然你不能通过http直接发出这样的请求,但你可以使用BeautifulSoup,这是一个Python模块,可以帮你解析html内容。
1
HTTP头部让你可以告诉服务器你想要的是html格式的内容,但它并不能让你直接搜索网页中某个特定的标签。
如果服务器支持范围请求,那么你可以分块下载html内容(按字节间隔下载,但这些间隔不一定对应于标签的开始或结束)。这样你就可以在每个块中搜索,直到找到你感兴趣的标签。
如果不支持范围请求,你可能就得下载整个网页,然后用lmxl、http5lib或BeautifulSoup等工具来处理下载的内容。
祝你好运!