尝试使用Python从标记中提取“text”

2024-10-01 22:28:32 发布

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

我试图提取这个页面的第一列(https://www.proxynova.com/proxy-server-list/country-fr/)上的代理IP号,只是一个数字,例如:“178.33.62.155”,但是当我试图提取相关标记上的所有文本内容时,它没有得到IP文本。在

网站上的html标签是:

<td align="left"><script>document.write('23178.3'.substr(2) + '3.62.155');</script>178.33.62.155</td>

然后我相信上面的Ip号(在标记脚本之后,在标记内)应该在我打印文本内容时出现,但是它没有,按照下面的代码,到目前为止,唯一没有出现的信息是Ip号。在

你知道如何提取这个特定的Ip信息吗?当我提取这个标签的所有文本内容时,它为什么没有出现?在

from lxml import html
import requests
import re

page = requests.get('https://www.proxynova.com/proxy-server-list/country-fr/')
tree = html.fromstring(page.content.decode('utf-8'))

for elem in tree.xpath('//table[@class="table"]//tbody//td[@align="left"]'):
print elem.text_content()

Tags: https标记文本importipcom内容server
2条回答

我承认,如果没有泰尔的答案,我不会得到这个,因为我错过了IP地址在脚本中的编码方式。在

import re
import requests
from lxml import etree

page = requests.get('https://www.proxynova.com/proxy-server-list/country-fr/').text
parser = etree.HTMLParser()
tree = etree.fromstring(page, parser=parser)
table = tree.xpath('.//table[@id="tbl_proxy_list"]//script/text()')

for item in table:
    m = re.match(r"document.write\('23([0-9.]+)'[^']+'([0-9.]+)'",item)
    if m:
        print (''.join(m.groups()))

我建议使用BeautifulSoup。这样地。在

import requests
import re
from bs4 import BeautifulSoup

res = requests.get('https://www.proxynova.com/proxy-server-list/country-fr/')
soup = BeautifulSoup(res.content, "lxml")

REGEX_JS = re.compile("^document\.write\('([^']+)'\.substr\(2\) \+ '([^']+)'\);$")

proxy_ip_list = []
for table in soup.find_all("table", id="tbl_proxy_list"):
    for script in table.find_all("script"):
        m = REGEX_JS.search(script.text)
        if m:
            proxy_ip_list.append(m.group(1)[2:] + m.group(2))

for ip in proxy_ip_list:
    print(ip)

相关问题 更多 >

    热门问题