repl.it上的lxml请求

时间:2016-12-15 11:19:59

标签: python web-scraping lxml

我在Replit上尝试lxml请求,但我不明白为什么它不起作用。该程序在最大重试之前不会停止运行,我收到此错误:

  

追踪(最近一次通话):     文件" python",第6行,in   requests.exceptions.ConnectionError:HTTPConnectionPool(host =' www.presidency.ucsb.edu',port = 80):使用url超出最大重试次数:/ws/index.php?pid = 29400.html(导致by NewConnectionError(':无法建立新连接:[Errno -2]名称或服务未知',))

我的代码很简单:

from lxml import html
import requests

url = 'http://www.presidency.ucsb.edu/ws/index.php?pid=29400.html'

r = requests.get(url)
tree = html.fromstring(r.content)

text = tree.xpath('//span[@class="displaytext"]/text()')

print(text)

我怎样才能让它运行?我试图获取该网站的内容,位于" displaytext"跨班。我一直在使用this Python guide作为参考。

Python版本3.5

2 个答案:

答案 0 :(得分:4)

我是Repl.it的工程师,这是我们平台的限制。我们目前不允许传出网络请求。

答案 1 :(得分:1)

切换回答,因为它可以让我更好地排除事情。

查看您定位的网站的HTML。使用此命令,您只选择1个特定标记:

text = tree.xpath('//span[@class="displaytext"]/text()')

指向具有类" displaytext"

的特定范围

您可以将代码更改为:

text = tree.xpath('//span[@class="displaytext"]/..')
for element in text[0]:
    print element

这将选择带有类" displaytext"的范围。然后选择该范围的父级。在for循环中,您将打印该父项的所有子项。

现在它也显示了真正的问题:段落元素不在该列表中。对不起,不知道答案。