Python 2.7发布,并从网站获取结果

时间:2016-09-28 20:36:37

标签: python-2.7 web web-scraping

我提前感谢您的帮助。我正在尝试编写一个python脚本,将IP地址发布到下面引用的站点,并将结果打印在终端或文件中,然后立即读取该文件。

这是我的剧本:

#!/usr/bin/env python

import requests


IP = raw_input("Enter IP address here: ")

Alert_URL = 'http://www.blacklistalert.org'


def submit_form():
    """Submit a form"""
    payload = IP

    # make a get request
    resp = requests.get(Alert_URL)
    print "Response to GET request: %s" % resp.content

    # send POST request
    resp = requests.post(Alert_URL, payload)
    print "Headers from a POST request response: %s" % resp.headers
    # print "HTML Response: %s" %resp.read()


if __name__ == '__main__':
    submit_form()

该网站有部分在网页上输入IP地址,并检查网站我发现输入的行如下:

<form method=POST onsubmit="document.forms[0].submit.disabled='true';">
IP or Domain <input onclick="this.value='';" name=q value=11.11.154.23>

我想以某种方式使用上面的输入部分发布我想要检查到网站的IP地址。例如,使用raw_input发布到&#39; value =&#39;部分,并得到结果。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要解析PHPSESSID并发帖:

import requests
from bs4 import BeautifulSoup


ip = raw_input("Enter IP address here: ")

data = {"q":  ip} # ip goes here
url = "http://www.blacklistalert.org/"

with requests.Session() as s:
    # get the page first to parse
    soup = BeautifulSoup(s.get(url).content)
    # extract and add the PHPSESSID
    PHPSESSID = soup.select_one("input[name=PHPSESSID]")["value"]
    data["PHPSESSID"] = PHPSESSID
    # finally post
    res = s.post(url, data=data)
    print(res)
    print(res.content)