首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新程序员,坚持python http请求

新程序员,坚持python http请求
EN

Stack Overflow用户
提问于 2013-09-17 18:10:49
回答 2查看 167关注 0票数 1

首先,我想事先感谢每个人,我意识到这可能是一个相当基本的问题,然而,在许多小时没有结果之后,我决定伸出援助之手,寻求帮助。

我正在编写一个小脚本,这个脚本最终将成为一个大得多的程序(希望是lol)的一部分。基本上,它查询hidemyass.com的代理列表(基于用户输入),然后将所述列表保存到一个临时文件中,以便在下一步中进行点击和验证。看起来很简单,对吧?

现在我的问题..。

当我提出请求并查看html响应源时,代理ip地址已经被分割为所有wierd。

例如:

代码语言:javascript
复制
    <br>
    .QJZ-{display:none}<br>
    .dA6C-{display:inline}<br>
    .h0UB-{display:none}<br>
    .HOns-{display:inline}<br>
    <br>        
    </style><div style="display:none">1</div><span></span><span style="display:none">99</span><span class="QJZ-">99</span><div style="display:none">99</div>201<span style="display: inline">.</span><span class="QJZ-">9</span><div style="display:none">9</div><div style="display:none">10</div><span style="display:none">80</span><span class="QJZ-">80</span><span style="display:none">140</span><span class="QJZ-">140</span><span style="display:none">149</span><span class="h0UB">149</span><div style="display:none">149</div><span style="display:none">161</span><span class="h0UB">161</span><span></span><span style="display:none">190</span>210<div style="display:none">217</div><span class="h0UB">234</span><span class="243">.</span><span class="h0UB">6

我的问题是,我怎么才能把我的代码读成ip地址呢?(这不是完整的html,我剪掉了,以缩短我的问题,因为它已经很大了)

再次感谢,

L8nit3tr0ubl3

编辑-忘记提到im与python一起工作,并且很少有javascript/html的经验(im假设拆分是用java完成的)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-17 19:02:03

他们特别想阻止你这么做。

(正如我在我的博客上描述的那样)

您可以要求他们提供一个API,或者您可以尝试使用CSS引擎来确定将显示哪些元素。

票数 1
EN

Stack Overflow用户

发布于 2013-09-18 14:31:34

代码语言:javascript
复制
#!/usr/bin/python
#-*- encoding: Utf-8 -*-
from requests import get
from re import sub
from sys import stdout

html = get('http://www.hidemyass.com/proxy-list/').content
html = html.split('<table id="listtable"')[1].split('</table')[0]
html = html.split('<tr')[2:]

checkClass = lambda x: x.group(2) if x.group(1) not in classesBad else ''

for tr in html:
    css = tr.split('<style>\n')[1].split('\n<')[0].split('\n')

    classesBad = [rule[1:5] for rule in css if 'display:none' in rule]

    ip = tr.split('</style>')[1].split('</span></td>')[0]
    ip = sub('<(?:span|div) style="display:none">.+?</(?:span|div)>', '', ip)
    ip = sub('<span style="display: inline">(.+?)</span>', r'\1', ip)
    ip = sub('<span class="(.+?)">(.+?)</span>', checkClass, ip)
    ip = ip.replace('<span></span>', '')

    port = tr.split('<td>\n')[1].split('<')[0]

    protocol = tr.split(' \n             <td>')[1].split('<')[0].lower()

    print '%s://%s:%s/' % (protocol, ip, port)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18856926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档