Viết chương trình tự tải xuống


66

Viết chương trình kết nối với trang web này, tải xuống chính câu trả lời được đăng, trích xuất mã nguồn của chính nó và in ra. Đầu ra phải giống hệt với mã nguồn. Mã ngắn nhất (tính bằng byte) sẽ thắng.

Quy tắc:

  • Không cho phép rút ngắn URL.
  • Câu trả lời phải có định dạng thông thường - một tiêu đề với tên và kích thước ngôn ngữ, mô tả tùy chọn, khối mã, mô tả và giải thích tùy chọn. Không cho phép phân định không tự nhiên.
  • Đầu ra phải bắt nguồn từ khối mã thực tế được đăng trên trang web.
  • Các chức năng không được phụ thuộc vào vị trí trong danh sách trả lời; nó sẽ hoạt động ngay cả khi có nhiều trang và câu trả lời không nằm ở trang đầu tiên.
  • Mới: lưu ý đặc biệt cho các câu trả lời được cho là chạy trong trình duyệt: bạn có thể yêu cầu chạy chúng trên miền codegolf (tuân theo chính sách cùng nguồn gốc) nhưng phải bao gồm tên miền và đường dẫn trong giải pháp để làm cho nó công bằng

39
Catch-22: Làm thế nào tôi có thể kiểm tra trình của tôi?
Martin Ender

9
Tôi thấy mọi người đăng câu trả lời và xóa chúng, để họ có thể kiểm tra mã của họ.
Justin

4
Các câu trả lời @ m.buettner có thể được kiểm tra trên các câu trả lời khác (cho các câu hỏi khác) trước, sau đó được đăng, sau đó được chỉnh sửa để thay đổi URL :)
aditsu

8
@hexafraction nếu bình luận có thể can thiệp vào câu trả lời, thì câu trả lời không được tốt lắm ...
aditsu

17
Một câu hỏi mắc kẹt trong đầu tôi: Làm thế nào để viết một tweet liên kết với chính nó mà không sử dụng bất kỳ công cụ rút ngắn URL nào, nhưng bằng cách ước tính id tweet của bạn tweet?
Ming-Tang

Câu trả lời:


34

Bash + coreutils + trình duyệt Lynx, 61 byte

Cảm ơn @FDinoff về các mẹo:

lynx -dump codegolf.stackexchange.com/posts/28164/body|grep 2

4
Và chuyện gì xảy ra nếu tôi gõ từ ma thuật mà grep đang tìm kiếm?
Bóng râm

3
lynx lynx lynx lynx. Nhận xét này sẽ được đưa ra (và cả tiêu đề)
ζ--

1
@hexafraction Awww. Bạn phải đi và làm hỏng nó!
Bóng râm

8
Url này nên hoạt động. codegolf.stackexchange.com/posts/28164/bodyVà nó bỏ qua ý kiến. Tôi cũng nghĩ rằng trong các quy tắc mà bạn có thể sử dụng nó ...
FDinoff

3
@DigitalTrauma awww ... chết tiệt.
haneefmubarak

22

Ruby, 155 186 195 148 138 110 97 ký tự

require'open-uri';puts open('http://codegolf.stackexchange.com/posts/28159/body').read[/req.+;/];

Tôi đã phải làm cho nó một dòng, bởi vì nếu không nó sẽ tạo ra các dòng mới \nthay vì các dòng mới thực sự.

  • +31 ký tự vì tôi không nhận thấy một số nhân vật đã được trốn thoát.
  • +9 ký tự để thoát khỏi dấu gạch chéo khó chịu.
  • Cảm ơn Nathan Osman vì đã lưu 2 ký tự và Ventero đã lưu 55 (!!!) bằng cách loại bỏ sự cần thiết của hầu hết các bản sửa lỗi được liệt kê ở trên.

Lời giải thích

Trước tiên hãy làm đẹp điều này một chút. Tuy nhiên, tôi sẽ phải sử dụng một ký hiệu hơi ... thú vị trong mã này. Tôi không thể sử dụng dấu chấm phẩy trong bài viết này, vì những lý do được giải thích sau, vì vậy tôi sẽ sử dụng {SEMI}thay cho dấu chấm phẩy thay thế.

require 'open-uri'
resp = open('http://codegolf.stackexchange.com/posts/28159/body').read
puts resp.match(/req.+{SEMI}/){SEMI}

Được rồi, bây giờ chúng ta hãy đi qua điều này. Hai dòng đầu tiên khá tự giải thích - chúng lấy văn bản HTML của câu trả lời này.

Bây giờ, dòng cuối cùng là một trong những thú vị ở đây. Bạn thấy dấu chấm phẩy dường như vô dụng ở cuối đoạn mã? Đó là hoàn toàn cần thiết, và đây là lý do tại sao.

Đầu tiên, resp.matchtrích xuất mã được in. Các regrec nó sử dụng cho điều này là mẹo : /req.+{SEMI}/. Nó lấy phần đầu của mã REQuire'net/http', bằng cách tìm kiếm req( resẽ lấy của tôi REputation). Sau đó, nó tìm thấy phần cuối của mã bằng cách tìm kiếm một dấu chấm phẩy! Vì +mặc định là tham lam, nên nó sẽ tiếp tục cho đến khi tìm thấy dấu chấm phẩy biểu thị sự kết thúc của mã. Xem lý do tại sao tôi không thể sử dụng dấu chấm phẩy nữa?

Sau đó, tôi không phải tiết lộ bất cứ điều gì nhờ vào cách khắc phục không sử dụng \nữa của Venter . Tất cả tôi phải làm là sửa chữa {AMPERSAND}thay đổi thành {AMPERSAND}amp{SEMI}, có thể đạt được chỉ bằng cách loại bỏ amp{SEMI}phần. Không cần điều này nữa vì URL mới. Sau đó, mã gốc đã được lấy! (Lưu ý: Tôi cũng không thể sử dụng ký hiệu và vì mã hóa HTML đã tạo ra dấu chấm phẩy được tạo.)


Một số nhân vật đang trốn thoát ..
aditsu

1
@aditsu Gah; đã không nhận thấy điều đó. Đã sửa.
Doorknob

Bạn sẽ ghét điều này .. một dấu gạch chéo ngược đang bị trùng lặp. Cũng có một sự khác biệt về dòng mới, nhưng đó là một điều nhỏ.
aditsu

@aditsu Argh! : P Cố định cũng được. Điều mới là vì puts; nó có thể được sửa với printnhưng meh. Chỉ cần giả vờ có một dòng mới trong mã, mặc dù SE sẽ không thể hiển thị nó.
Doorknob

1
Đối với liên kết, http://codegolf.stackexchange.com/a/28159sẽ cho kết quả tương tự như của bạn và sẽ lưu một số ký tự.
Mhmd

20

PowerShell - 69 62

(irm codegolf.stackexchange.com/posts/28236/body).div.pre.code

DOM trong một vỏ. Đẹp!
fregante

Không yêu cầu quản lý quyền Azure? Không có mô-đun đó, tôi nghĩ bạn có thể làm điều đó với Invoke-WebRequest.
Scott Leadley

@ScottLeadley irmlà bí danh Invoke-RestMethodvà được giới thiệu với lõi PowerShell v3. computerperformance.co.uk/powershell/powershell3-alias.htm
Rynant

10
Thánh lồn Một câu trả lời golf mã PowerShell với độ dài theo thứ tự độ lớn như các câu trả lời hàng đầu. +1
Adam Maras

@AdamMara Ha, tôi hiểu ý của bạn! Nó đôi khi xảy ra. codegolf.stackexchange.com/a/26811/4565codegolf.stackexchange.com/a/21982/4565 không quá xa so với người dẫn đầu.
Rynant

15

JavaScript - 123 122 101 95 92 91 87 86 114

with(new XMLHttpRequest)send(open(0,/\codegolf.stackexchange.com\posts\28175\body/,0)),alert(/w.*/.exec(response))

Chạy trong bảng điều khiển của trình duyệt web của bạn trên trang này. Đã thử nghiệm trên Chrome và Firefox mới nhất .

chỉnh sửa: +28 byte để thêm tên miền đầy đủ.

Firefox không thích thủ thuật URL Regex của tôi nữa với bản cập nhật này :(

Đây là giải pháp 86 byte phá vỡ quy tắc:

with(new XMLHttpRequest)send(open(0,/posts\28175\body/,0)),alert(/w.*/.exec(response))

Điều đó làm tôi kinh ngạc. Nhiều lần.
fregante

1
@ bfred.it Tôi chỉ cần cắt một byte bằng regex thú vị. Tôi hy vọng nó làm cho bạn kinh ngạc thêm một lần nữa.
nderscore

Nếu in ra bàn điều khiển là một phương thức đầu ra có thể chấp nhận được, bạn có thể rút ngắn 7 ký tự bằng cách xóa cảnh báo.
Tejas Kale

Ngoài ra, theo quy tắc mới, bạn phải thêm codegolf.stackexchange.com/vào url.
Tejas Kale

1
@TejasKale Từ những gì tôi thấy mọi người cau mày với các giải pháp không thực sự cảnh báo / document.write / console.log câu trả lời.
nderscore

10

Ruby + wget + gunzip , 159 86 82 71

Sử dụng mẹo của @FDinoff để sử dụng http://codegolf.stackexchange.com/posts/28173/body.

puts `wget -qO- codegolf.stackexchange.com/posts/28173/body`[/pu.*\]/]

Thử nghiệm. Cảm ơn @ace và @Bob để tối ưu hóa dòng lệnh.


2
Bạn có thể kết hợp các cờ trong wget, như trong wget -qO- url. Ngoài ra, trong bash bạn không cần dấu ngoặc kép cho url, vì vậy điều này cũng có thể phù hợp với bạn.
ace_HongKongInependence

Bạn có thể rời khỏi http://.
Bob

6

CJam - 53

"codegolf.stackexchange.com/posts/28184/body"g54/1=);

Tôi đang tạo wiki cộng đồng này vì tôi đang trả lời câu hỏi của riêng mình và không thực sự muốn cạnh tranh: p
Tín dụng cho FDinoff cho lựa chọn URL.


Woot, +1 cho khuôn mặt cười trong mã
Cruncher

1
@Cruncher );không quá cười với tôi ...
MD XF

5

Rebmu, 91 ký tự

Do Catch-22 tôi phải đăng bài để nhận URL của câu trả lời này. :-/ Được rồi, đã rõ.

paTSrd http://codegolf.stackexchange.com/a/28154[th<a name="28154">th<code>cpCto</code>]prC

Rebmu là một phương ngữ của Rebol, và bạn có thể đọc tất cả mọi thứ . Rebol tương đương ở đây sẽ là:

parse to-string read http://codegolf.stackexchange.com/a/28154 [
    thru <a name="28154">
    thru <code>
    copy c to </code>
]
print c

PARSE của Rebol là một loại câu trả lời dễ hiểu cho RegEx. Nó bắt đầu một vị trí phân tích cú pháp của đầu vào (có thể là bất kỳ chuỗi nào, bao gồm các khối cấu trúc ... dữ liệu nhị phân ... hoặc các loại chuỗi) . Các quy tắc là một ngôn ngữ cho cách vị trí phân tích di chuyển.

Thẻ và URL thực sự chỉ là chuỗi dưới mui xe trong ngôn ngữ. Nhưng chúng là "hương vị", và vì Rebol được gõ động, bạn có thể kiểm tra loại đó. Ví dụ, READ biết rằng nếu bạn cung cấp cho nó một chuỗi có hương vị URL, thì nó sẽ gửi đến một trình xử lý lược đồ để thực hiện việc đọc. (Trong trường hợp này, một người đã đăng ký HTTP). Bạn lấy lại các byte UTF-8 theo mặc định, vì vậy chúng tôi sử dụng chuỗi để giải mã điều đó và nhận một loạt các điểm mã trong một chuỗi Unicode bình thường.

Trong trường hợp phương ngữ phân tích cú pháp, việc gặp một loại thẻ chỉ được khớp với nhau như thể đó là một chuỗi trông giống như thẻ. THRU là một hướng dẫn có nghĩa là "bỏ qua cho đến khi quy tắc tiếp theo được khớp, và sau đó đặt vị trí khớp vào cuối của những gì bạn vừa khớp." (TO là tương tự phù hợp, nhưng để lại vị trí phân tích cú pháp trước phần tử).

Vì vậy, chúng tôi zip dọc theo <a name="28154">. Sau đó, chúng tôi nén qua lần xuất hiện tiếp theo <code>, với vị trí phân tích cú pháp của chúng tôi hiện được đặt ngay sau >. Lệnh COPY của PARSE sau đó cho phép chúng tôi sao chép dữ liệu theo quy tắc khác, trong trường hợp này quy tắc đó là [TO </code>]... vì vậy chúng tôi nhận được vào biến C mọi thứ cho đến trước đó <.

Thật tuyệt phải không? :-)

Về mặt kỹ thuật, tôi có thể loại bỏ nó nhiều hơn, ví dụ bằng cách tìm kiếm TO "</"và lưu ba ký tự - không cần phải khớp toàn bộ </code>thẻ kết thúc khi cần </làm. Đối số tương tự tôi có thể thực hiện cho thẻ bắt đầu. Nhưng Rebmu là về chơi golf biết chữ ... ngay cả khi bạn có thể nghĩ rằng nó trông kỳ lạ lúc đầu!

CẬP NHẬT : /bodymánh khóe đã ra khỏi túi, nhưng tôi cũng sẽ để nó như vậy ... bởi vì tôi nghĩ nó mang tính giáo dục hơn theo cách này.


5

Java bây giờ 634, 852, là 1004

Mã đã được cập nhật; cảm ơn vì đã góp ý Đã chơi gôn: bây giờ thay thế & gt bằng>

//bacchus
package golf;
import java.net.*;
import java.util.*;
public class G{
public static void main(String[] a) throws Exception {
Scanner z;
URL u;
int x=0;
String s;
u=new URL("http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself");
z=new Scanner(u.openConnection().getInputStream());
z.useDelimiter("\\s*//bacchus\\s*");
while(z.hasNext())
{
s=z.next();
s=s.replace("&gt;", ">");
if(x>0)System.out.println("//bacchus\n"+s);
x++;
if(x>2)break;
}
System.out.println("//bacchus\n");
}
}
//bacchus

Gửi để thử nghiệm, tôi sẽ chỉnh sửa và thử chơi golf ngay. Cần thay đổi x> 1 thành x> 2 vì chuỗi kiểm tra cũng nằm trong mã của tôi. Lưu ý: Mã golf thay thế> ký hiệu thành & gt.

//bacchus
package golf;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Golf {

    public static void main(String[] args) throws IOException {
        URL u;
        URLConnection c;
        InputStream i;
        InputStreamReader r;
        BufferedReader b;
        String s;
        int x=0;
        try {
            u=new URL("http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself");
            c=u.openConnection();
            i=c.getInputStream();
            r=new InputStreamReader(i);
            b=new BufferedReader(r);
            while((s=b.readLine())!=null)
            {
                if(s.contains("//bacchus")) x++;
                if(x>0)System.out.println(s);
                if(x>2) break;
            }
            i.close();
            b.close();
        } catch (MalformedURLException ex) {

        }
    }

}
//bacchus

7
Làm thế nào để bạn xử lý ý kiến ​​có chứa //bacchus?
ζ--

3
Bạn có thể nội tuyến rất nhiều thứ, thử tài nguyên và sử dụng *nhập để tiết kiệm rất nhiều mã.
Simon Kuang

@SimonKuang - Tôi cũng sẽ để các luồng mở hơn là đóng các công cụ. Ngoài ra, throws Exceptionthay vì cố gắng xử lý bất cứ điều gì. Ngoài ra, tôi nghĩ rằng việc sử dụng Máy quét thay vì BufferedReader sẽ đơn giản hơn, đặc biệt là khi bạn có thể đặt dấu phân cách thành //bacchus, điều này sẽ giúp mọi việc dễ dàng hơn ...
Jules

5

Python, 175 167 byte

Điều này sử dụng hai thư viện bên ngoài; Tôi đã không đọc rằng nó là trái phép.

import bs4,requests
print(bs4.BeautifulSoup(requests.get('http://codegolf.stackexchange.com/q/28154').text).select('#answer-28171')[0].select('pre > code')[0].string)

Mã dài hơn, nhưng đẹp hơn:

import bs4, requests
request = requests.get('http://codegolf.stackexchange.com/q/28154')
soup = bs4.BeautifulSoup(request.text)
answer = soup.select('#answer-28171')[0]
code = answer.select('pre > code')[1].string
print(code)

1
questionsthể thay thế url trong q:http://codegolf.stackexchange.com/q/28154
Justin

1
Không gian trong bs4, requests(dòng 1) có thể được loại bỏ để giảm 1 byte.
ace_HongKongInependence

5

JavaScript, 228

r=new XMLHttpRequest()
c='code'
r.open('GET','//'+c+'golf.stackexchange.com/posts/28157/body')
r.onreadystatechange=function(){this.readyState==4&&alert((a=r.responseText).substr(i=a.indexOf(c)+5,a.indexOf('/'+c)-i-1))}
r.send()

Chạy trên trang này.


Làm thế nào để bạn chạy nó?
aditsu

@aditsu Nó được cho là chạy trên bảng điều khiển JavaScript của trình duyệt. Nhưng tôi vẫn đang thử nghiệm (và sửa lỗi), vui lòng đợi
ace_HongKongInependence

@aditsu Nó nên hoạt động ngay bây giờ. Mở bảng điều khiển trình duyệt của bạn (nhấn F12) và dán mã này vào đó.
ace_HongKongInependence

thưa ngài, cần một if(this.readyState == this.DONE)chức năng bên trong.
Fabricio

1
@ace Tôi thấy :) Tôi đã không thấy câu trả lời js khác cho đến bây giờ. Sau đó lấy upvote này từ tôi
C5H8NNaO4

4

Haskell, 563 613 byte

import Control.Monad
import Data.List
import Network.HTTP
m%f=join(fmap f m)
q s=(simpleHTTP(getRequest"http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself?answertab=oldest#tab-top"))%getResponseBody%(putStrLn.head.filter((==)(s++show s)).map(take 613).tails)
main=q"import Control.Monad\nimport Data.List\nimport Network.HTTP\nm%f=join(fmap f m)\nq s=(simpleHTTP(getRequest\"http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself?answertab=oldest#tab-top\"))%getResponseBody%(putStrLn.head.filter((==)(s++show s)).map(take 613).tails)\nmain=q"

Thử nghiệm. Có hỗ trợ trang thông qua tính năng "bài viết cũ nhất". Sử dụng cấu trúc quine-line để tìm những gì cần in. Điều import Control.Monadnày chỉ bởi vì >>=tạo ra &gt;trong HTML.


4

Javascript + jQuery, 87 , 67

Tôi không chắc chắn rằng tôi được phép sử dụng jQuery, nhưng:

$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')

Javascript + jQuery, nếu được thực hiện trong trang này: 27 , 25

Để giải trí, nếu nó được thực hiện ở đây:

$('[id$=268] pre').html()

$('[id$=28268] pre').html()


1
Điều này đầu ra nhiều hơn mã nguồn.
nderscore

1
67:$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
nderscore

Bạn đã đúng, tôi đã sai khi trả lời toàn bộ câu trả lời thay vì mã
Martijn

4

w3m 45 ký tự

w3m codegolf.stackexchange.com/a/28336|grep ☻

1
☺. Nó vẫn hoạt động? Chỉnh sửa: Có vẻ như nó làm.
ace_HongKongInependence

@ace Tôi nhận được bình luận của bạn khi tôi chạy nó
FDinoff

Đã sửa :) Còn ai nữa không? 😁
gnibbler

3

Phi tiêu, 164

Tôi nghĩ rằng tôi đã thử điều này trong Dart, khá thú vị khi sử dụng imo.

Điều này có thể được chạy trong bảng điều khiển trong DartEditor, nhưng không yêu cầu gói http được thêm vào pubspec.yaml

import"package:http/http.dart"as h;h.read("http://codegolf.stackexchange.com/posts/28215/body").then((s){print(new RegExp(r"im.+(?:})").firstMatch(s).group(0));});}

Phiên bản bị đánh cắp:

import "package:http/http.dart" as h;

void main()
{
  h.read("http://codegolf.stackexchange.com/posts/28215/body").then((s)
  {
    print(new RegExp(r"im.+(?:})").firstMatch(s).group(0));
  });
}

2

R 114 ký tự

library(XML);cat(xpathSApply(xmlParse("http://codegolf.stackexchange.com/posts/28216/body"),'//code',xmlValue)[1])

Không có phép thuật thực sự ở đây: nó lấy giá trị của trường giữa các thẻ html <code></code>. Sử dụng thư viện XML(như người ta có thể thấy trong mã khá rõ ràng). Kết quả đầu ra là thiết bị xuất chuẩn.


1

Java, 300 294

import java.net.*;import java.util.*;public class G{public static void main (String [] a) throws Exception{Scanner s=new Scanner(new URL("http://codegolf.stackexchange.com/posts/28189/body").openConnection().getInputStream()).useDelimiter("./?[c]ode\\W");s.next();System.out.print(s.next());}}

Một phiên bản cải tiến của câu trả lời của bacchusbeale:

  • không đóng tài nguyên một cách không cần thiết
  • không khai báo các biến không cần thiết
  • sử dụng a Scannerđể tránh phải lặp qua đầu vào
  • sử dụng biểu thức chính quy không khớp với chính nó để tránh phải bỏ qua lần xuất hiện giữa của điểm đánh dấu bắt đầu / kết thúc.

Đã cập nhật:

  • Sử dụng URL trực tiếp đến bài đăng, vì vậy chúng tôi không cần một nhận xét duy nhất để xác định bắt đầu / kết thúc mã; hiện sử dụng <code>[...]</code>làm dấu phân cách để tìm kiếm (thực sự sử dụng biểu thức chính quy "./?[c[ode\W", để tránh phải giải mã &lt;&gt;- "\ W" là cần thiết thay vì ngắn hơn "." để tránh nó khớp một phần của URL với bài đăng, thật không may, có giá 2 ký tự và dấu ngoặc vuông xung quanh c ngăn chính regex khớp với chính nó).

1
Bạn có một loạt các không gian không cần thiết. Ngoài ra lớp học của bạn không cần phải công khai.
aditsu

1
openConnection (). getInputStream () cũng có thể được rút ngắn thành openStream ()
aditsu

1

w3m 55 byte

w3m codegolf.stackexchange.com/posts/28242/body|grep x

Dựa trên @DigitalTrauma


1

Ruby, 237 215 146 132

require'mechanize'
a=Mechanize.new
puts a.get('http://codegolf.stackexchange.com/a/28159').search('.lang-rb code:nth-child(1)').text

Khá chắc chắn rằng bạn có thể loại bỏ một vài khoảng trắng ở đây và ở đó để lưu một vài byte.
MisterBla

@richard ai quan tâm tôi sẽ không giành chiến thắng nào.
Mhmd

1
Làm điều đó cho lols, không phải để chiến thắng.
MisterBla

@RichardA đã xong, và tôi cũng đã xóa một vài ký tự khỏi regrec.
Mhmd

1

Chế biến, 90

print(loadStrings("http://codegolf.stackexchange.com/posts/28657/body")[2].substring(11));

Chỉnh sửa: Cuối cùng đã có nó!


1

bash + awk, 71 byte

curl -sL codegolf.stackexchange.com/q/28154 |awk -F\> '/\#/ {print $3}'

2
Dường như không hoạt động - nó tạo ra rất nhiều thứ khác cùng với câu trả lời này.
Đạp xe

@ Đi xe đạp thật, có vẻ như phụ thuộc vào vị trí (phá vỡ quy tắc cuối cùng)
aditsu

Bạn có thể rời khỏi http://.
Bob

@ user155406: lưu ý rằng mỗi câu trả lời có một URL - câu trả lời này là codegolf.stackexchange.com/a/28179/14710
Phil H

0

Javascript, 138

a=window.open("http://codegolf.stackexchange.com/posts/28160/body");setTimeout('alert(a.document.body.innerHTML.match(/a=.*9\\)/)[0])',99)

Điều này hoạt động giả định rằng trang tải dưới 99 ms. Nó cũng phải được chạy thông qua bảng điều khiển được mở trên trang codegolf.SE, vì cùng chính sách xuất xứ.


Chỉ cần một lưu ý: bạn không cần sên trong URL và câu hỏi có thể được thay thế bằng q.
Schism

1
Lưu ý rằng bạn có thể làm http://codegolf.stackexchange.com/a/28160thay vìhttp://codegolf.stackexchange.com/a/28160/12551
Justin

Chrome không thích điều này: "Uncaught TypeError: Không thể đọc tài liệu 'tài liệu' không xác định"
Spedwards

@Spedwards bạn nên vô hiệu hóa trình chặn cửa sổ bật lên.
nderscore

0

Perl 5.10, 155 127 122 117 byte

use XML::LibXML;say XML::LibXML->new->parse_file('http://codegolf.stackexchange.com/posts/28330/body')->find('//pre')

Sử dụng XML::LibXML.


0

Shell và xmllint, 82 byte

xmllint --xpath 'string(//pre)' http://codegolf.stackexchange.com/posts/28333/body

0

Con trăn, 164

Hoạt động bằng cách trích xuất văn bản giữa các thẻ mã. Nó khá dài nhưng nó sẽ luôn hoạt động chính xác trừ khi trang html được chỉnh sửa trực tiếp hoặc một khối mã mới được thêm vào trước khối bên dưới (có một khối mã sau sẽ không ảnh hưởng đến đầu ra của chương trình).

import urllib2
print urllib2.urlopen("http://codegolf.stackexchange.com/posts/28617/body").read().split(chr(60)+"code"+chr(62))[1].split(chr(60)+"/code"+chr(62))[0]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.