我已經用beautifulsoup做了一些基本的文字拼圖,但是對於這個頁面(http://reference.wolfram.com/language/ref/BarChart.html),所討論的文本被格式化爲圖像。人們可以點擊每個單獨的命令(例如BarChart [{1,2,3}])複製並手動粘貼,但我想知道是否有合理的方法可以獲得全部143條命令,而不必爲每個人一段代碼。有什麼辦法可以使用Python從這個頁面中刪除命令嗎?
0
A
回答
0
雖然這可能是矯枉過正,但你可以用selenium,基本上自動點擊鼠標的動作,並使用剪貼板包拿到複製的文本返回到了Python。一個粗略的想法是:
from selenium import webdriver
import clipboard
driver = webdriver.Chrome()
driver.get("http://reference.wolfram.com/language/ref/BarChart.html")
#get all the image elements
elem: = driver.find_elements_by_tag_name("img")
#click and paste
text_list = []
for elem in elems:
#clicking on the image element
elem.click()
#get text from clipboard
text = clipboard.paste()
#check if text is empty
if text != "":
text_list.append(text)
正如我所說,這可能不是做的最好的方式,你可以看看網站上的clipboard.js
文件,檢查是否有一個簡單的方法。希望能幫助到你。
0
如果您在與頁面進行交互時觀察瀏覽器的開發工具,則會看到懸停在其中一個圖像/文本元素上的請求會加載該元素的文本。所以你必須爲每個文本提出一個請求來獲得所有這些值。這些網址都是這樣的:http://reference.wolfram.com/language/ref/Files/BarChart.en/i_5.txt。
首先,您應該找到一種方式來生成所有這些請求。它看起來像是所有奇數值(i_1.txt
,i_3.txt
等),並且它們對應於div
的ID。
這些不給你好看的文字,雖然,它有很多的標記和文字轉義:
<pre name='i_5_in' id='i_5_in' class='IFT'>
BarChart[{{1, 2, 3}, {1, 3, 2}, {5, 2}},
ChartLabels -> {"a", "b", "c"}]
</pre><div class='IFU'>
<a name='408182431'></a>http://wolfram.com/xid/0cq0nbvj-g1a1u5</div>
作爲一對夫婦人指出,clipboard.js
就是發起的JavaScript和處理這些請求可以找到。您可以通過檢查元素的事件偵聽器或通過跟蹤請求的啓動器堆棧來實現。這有一些線你可以用它來寫一個Python函數,它會刮掉它們。有一個名爲PyQuery的庫(docs),它允許您在HTML上使用類似jQuery的選擇器來加快速度。
相關問題
- 1. 有什麼辦法可以這樣嗎?
- 2. 有什麼辦法可以在WPF中別名命令嗎?
- 3. 有什麼辦法可以禁用FitNesse頁面緩存嗎?
- 4. 有什麼方法可以動態地刪除這個詞嗎?
- 5. 有什麼辦法可以生成級聯刪除語句嗎?
- 6. 有什麼辦法可以用ggplot 2來使用Identify命令嗎?
- 7. 有什麼方法可以刪除python中的命令提示符shell?
- 8. 有什麼辦法可以刪除這個函數中的類型冗餘?
- 9. 有什麼辦法可以在Django Admin中一次刪除多個項目嗎?
- 10. 有什麼辦法可以簡化這個查詢嗎?
- 11. 有什麼辦法可以加快這個查詢嗎?
- 12. 有什麼辦法可以縮短這個SQL Server查詢嗎?
- 13. 有什麼辦法可以減少這個ado.net代碼嗎?
- 14. 有沒有什麼辦法可以在QGridLayout中刪除QWidget?
- 15. 有什麼辦法從java.util.logging.Logger輸出中刪除信息行嗎?
- 16. 有什麼辦法可以像Winforms中的Slider.AutoToolTipPlacement這樣做嗎?
- 17. 有什麼辦法可以從父類調用子方法嗎?
- 18. 有什麼辦法可以取消在Appengine中刪除索引?
- 19. 有什麼辦法可以使這個UDF具有確定性嗎?
- 20. 有什麼辦法可以使這個座標比較函數更有效嗎?
- 21. 有沒有什麼辦法可以清除nodeJs命令提示符?
- 22. 有什麼辦法可以在sql中使用函數嗎?
- 23. 有什麼辦法可以在random.randint中使用raw_input變量嗎?
- 24. 我可以從.htacces中只爲單個頁面刪除.html嗎?
- 25. 有什麼辦法可以在python中使用configobj寫評論
- 26. 有什麼辦法可以指示argparse(Python 2.7)從sys.argv中刪除找到的參數嗎?
- 27. 有什麼辦法可以簡化這條線嗎?
- 28. 有什麼辦法可以縮短這段代碼嗎?
- 29. 有什麼辦法可以縮短這段代碼嗎?
- 30. 有什麼辦法可以從超類中省略變量嗎?
有什麼辦法嗎?就在這裏。 – zwer
查看頁面加載的腳本,找到並理解每個這樣的點擊調用的'load_copy_text()'。也許拼湊甚至不需要。 – 9000