DEV Community

codemee
codemee

Posted on

PyQuery 2.0 與 1.X 的差異

我自己被 JQuery 荼毒極深, 所以很喜歡使用 PyQuery, 不過 PyQuery 2.0 和 1.X 版有一些改變, 如果沒注意, 程式執行一定會出錯。

要用 url 指名引數傳入網址

PyQuery 2.0 有一個關鍵的改變, 就是建立 PyQuery 物件時, 網址要用 url 指名引數傳入, 例如在 1.X 版中可以直接將網址傳入, 像是這樣寫:

>>> from pyquery import PyQuery as pq
>>> p = pq('https://flagtech.github.io/flag.txt')
>>> print(p.html())
Enter fullscreen mode Exit fullscreen mode

顯示結果如下:

<body><p>FLAG&#13;
  ______ _               _____ &#13;
 |  ____| |        /\   / ____|&#13;
 | |__  | |       /  \ | |  __ &#13;
 |  __| | |      / /\ \| | |_ |&#13;
 | |    | |____ / ____ \ |__| |&#13;
 |_|    |______/_/    \_\_____|&#13;
                               &#13;
                               </p></body>
Enter fullscreen mode Exit fullscreen mode

PyQuery 的建構方法中會自動判斷傳入的字串是不是網址

但是在 2.0 中, 同樣的寫法會被當成是要以傳入引數內容建立 PyQuery 物件, 而不是要載入網頁的網址:

>>> from pyquery import PyQuery as pq
>>> p = pq('https://flagtech.github.io/flag.txt')
>>> print(p.html())
https://flagtech.github.io/flag.txt
Enter fullscreen mode Exit fullscreen mode

必須改成用 url 指名引數傳入網址:

>>> p = pq(url='https://flagtech.github.io/flag.txt')
>>> print(p.html())
Enter fullscreen mode Exit fullscreen mode

顯示結果如下:

<body><p>FLAG&#13;
  ______ _               _____ &#13;
 |  ____| |        /\   / ____|&#13;
 | |__  | |       /  \ | |  __ &#13;
 |  __| | |      / /\ \| | |_ |&#13;
 | |    | |____ / ____ \ |__| |&#13;
 |_|    |______/_/    \_\_____|&#13;
                               &#13;
                               </p></body>
Enter fullscreen mode Exit fullscreen mode

Top comments (0)