问题:原文显示内容是“8080”,但爬取后,每次都显示不同数字。
一、网页内容
二、程序
import requests
from bs4 import BeautifulSoup
User_Agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
headers={'User-agent':User_Agent}
proxy = []
url = 'https://proxy.coderbusy.com/'
res = requests.get(url,headers=headers)
soup = BeautifulSoup(res.text,'lxml')
ips = soup.findAll('tr')
for x in range(1,len(ips)):
ip = ips[x]
ip_temp = soup.select('#site-app > div > div > div > div > table > tbody > tr > td.port-box')
aa=ip_temp[0].attrs.get('data-ip')
aaa=ip_temp[0].string
print(ip_temp[0])
print(aa)
print (aaa)
三、运行结果
<td class="port-box" data-i="8450" data-ip="62.33.159.116">17981</td>
62.33.159.116
17981
真正的端口是页面加载完用 js 替换的。审查页面元素有个加密的 mian.js :
在线解密一下得到:
十六进制转为字符串之后得到:
从代码可以看出,真实的端口是 .prot-box 里 data-ip 属性值 减去 ip 的四位数之和