python
  • web-scraping
  • lxml
  • 2016-12-15 25 views 0 likes 
    0

    我试图在Replit lxml请求,我不明白为什么它不起作用。该程序不会停止运行,直到最大重试,在那里我得到这个错误:lxml请求repl.it

    Traceback (most recent call last): File "python", line 6, in requests.exceptions.ConnectionError: HTTPConnectionPool(host='www.presidency.ucsb.edu', port=80): Max retries exceeded with url: /ws/index.php?pid=29400.html (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))

    我的代码非常简单:

    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”span class中的该网站的内容。我一直在使用this Python guide作为参考。

    Python版本3.5

    +1

    当我运行你的代码时,我确实得到了输出:>>> print text [“HOWARD K. SMITH,主持人:晚上好,美国的电视台和广播电台以及他们的附属电台都很自豪为两位主要候选人在当前政治运动中为讨论问题提供了便利,候选人无需介绍,共和党候选人......等等......''你是否通过pip安装了请求模块? python版本?(我的是2.7) –

    +1

    ps:我直接在python中工作。repl.it不允许我导入请求 –

    +0

    所以问题是在repl.it中提取请求谢谢:) –

    回答

    4

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

    +0

    我可以问为什么?你计划支持哪一天? – fiatjaf

    +0

    是否有任何其他在线IDE支持传出请求? –

    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循环中,您可以打印该父项的所有子项。

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

    相关问题