首页 > 解决方案 > 如何实现这个python post并获取?

问题描述

我已经尝试了几个小时使用requestsand urllib。我很迷茫,也被谷歌误解了。一些技巧,甚至任何东西都会很有用。谢谢你。

目标:发布国家代码和电话号码,然后获取移动运营商等问题:不打印任何内容。变量“名称”打印出无。

def do_ccc(self): #Part of bigger class
    """Phone Number Scan"""
    #prefix=input("Phone Number Prefix:")
    #number=input("Phone Number: ")
    url=("https://freecarrierlookup.com/index.php")

    from bs4 import BeautifulSoup
    import urllib
    data = {'cc' : "COUNTRY CODE", 
            'phonenum' : "PHONE NUMBER"}#.encode('ascii')
    data=json.dump(data,sys.stdout)

    page=urllib.request.urlopen(url, data)
    soup=BeautifulSoup(page, 'html.parser')
    name=soup.find('div', attrs={'class': 'col-sm-6 col-md-8'})
    #^^^# Test(should print phone number)
    print(name)

标签: pythonpython-3.xpython-requestsurllib

解决方案


正如 Zags 指出的那样,使用网站并违反其服务条款并不是一个好主意,尤其是当该网站提供廉价的API时。

但回答你原来的问题:

  • 您正在使用json.loads而不是json.load导致一个空的空data对象。
  • 如果您查看该页面,您将看到 POST 请求的 URL 不同,getcarrier.php而不是index.php.
  • 您还需要将您的strfrom转换json.dumpsbytes,即使那样网站也会拒绝您的呼叫,因为隐藏的令牌会添加到网站提交的每个请求中以防止自动抓取。

推荐阅读