使用urllib时无法获取java脚本标记后的文本

2024-10-02 02:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用urllib获取html页面。 链接:http://spys.one/en/socks-proxy-list/

<td colspan="1"><font class="spy1">1</font> <font class="spy14">178.197.249.213<script type="text/javascript">document.write("<font class=spy2>:<\/font>"+(e5b2l2^t0d4)+(o5p6w3^i9w3)+(d4m3m3^g7i9)+(o5p6w3^i9w3))</script><font class="spy2">:</font>1080</font></td>

我想解析ip地址和端口。但是在使用urllib请求url时,不会提取端口

我正在使用centos 7。我尝试使用urllib2

req = urllib.request.Request('http://spys.one/en/socks-proxy-list/')

预期结果应与上述相同。 实际上,我没有在java脚本标记之后获得端口信息


Tags: 端口httpscripturllibonelistclassen
1条回答
网友
1楼 · 发布于 2024-10-02 02:24:46

端口使用javascript显示。 您可以使用以下代码来解码javascript

import requests
import re
from lxml import html

url = 'http://spys.one/en/socks-proxy-list/'
res = requests.get(url)

parser = html.fromstring(res.text)
rows = parser.xpath('//tr[@class="spy1xx"]/td/font[@class="spy14"]')
js = parser.xpath('//script[@type="text/javascript"]/text()')[0]
json_map = {i.split('=')[0]: i.split("=")[1][:1] for i in js.split(';')[-11:-1]}

proxy = []
for r in rows:
    ip = r.xpath('./text()')[0]
    try:
        script = r.xpath("./script/text()")[0]
    except IndexError:
        continue
    port_list = re.findall(r'\((\w{6})', script)
    port = ''.join([json_map[key] for key in port_list])
    proxy.append(ip + ":" + port)
print(proxy)

相关问题 更多 >

    热门问题