尝试从网页读取数据时的回溯

时间:2017-08-26 13:27:50

标签: python sockets network-programming

# -*- coding: utf-8 -*-
"""
Created on Sat Aug 26 17:31:06 2017

@author: Pavan Vallapureddy
"""
"""
Write a program to prompt the user for the URL so it can read any web page. 
You can use split('/') to break the URL into its component parts so you can 
extract the host name for the socket connect call.
"""

import socket

url = input("Enter url: ")
port = int(input("Enter port: "))
urlSplit = url.split("/")
host = urlSplit[2]

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((host, port))
cmd = "GET " + url + " HTTP/1.0\r\n\r\n".encode
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if (len(data) < 1):
        break
    print(data.decode())
mysock.close()

输入网址:http://data.pr4e.org/romeo.txt
输入端口:80
追溯(最近的呼叫最后):
  文件&#34; exercise1.py&#34;,第17行,在     cmd =&#34; GET&#34; + url +&#34; HTTP / 1.0 \ r \ n \ r \ n&#34; .encode
TypeError:必须是str,而不是builtin_function_or_method

1 个答案:

答案 0 :(得分:0)

您必须为方法encode()调用方法cmd

cmd = "GET " + url + " HTTP/1.0\r\n\r\n"
mysock.send(cmd.encode())