试图提取文本'来自使用Python的标签

时间:2017-05-14 15:00:44

标签: python html

我试图在此页面的第一列(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信息及其出现原因的任何想法吗?

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()

2 个答案:

答案 0 :(得分:1)

我建议使用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)

答案 1 :(得分:1)

我承认如果没有说出答案我就不会得到这个,因为我错过了脚本中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()))