python
  • web-scraping
  • lxml
  • 2016-12-15 48 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循環中,您可以打印該父項的所有子項。

    現在它也顯示了真正的問題:段落元素不在該列表中。對不起,不知道答案。

    相關問題