我是使用BeautifulSoup的全新的,所以如果我的問題是愚蠢的,請原諒我。然而,我一直在谷歌搜索和嘗試建議,在每一個stackoverflow線程我可以從早上6點,但無濟於事。BeautifulSoup返回不同的HTML比查看來源
我的問題是我有一個基因名稱的.csv文件,其中一些是ensEMBL格式,這意味着我必須使用ensembl數據庫來查找我需要的信息。其餘的我可以使用ncbi數據庫。
現在,我的代碼很好。我知道這一點,因爲發送給ncbi的每個查詢都會返回我需要的信息,並且我可以使用BeautifulSoup將其全部提取出來並輸出到csv。但是,無論是urlopen還是BeautifulSoup都沒有按照我所瞭解的方式工作。
當我把下面的URL放到我的地址欄中時,正確的網頁加載:http://uswest.ensembl.org/Gallus_gallus/Gene/Summary?db=core;g=ENSGALG00000016955;r=1:165302186-165480795;t=ENSGALT00000027404。
我可以查看源代碼並查看HTML。然而,當我有:
html = urlopen(http://uswest.ensembl.org/Gallus_gallus/Gene/Summary?db=core;g=ENSGALG00000016955;r=1:165302186-165480795;t=ENSGALT00000027404, 'lxml')
它輸出的HTML根本不是我在我的瀏覽器中加載相同的URL並查看源代碼時得到的。我知道對於使用javascript的頁面,inspect元素和視圖源將有所不同,但urlopen應始終返回與視圖源相同的HTML。
我需要在「說明」之後提取字符串。訪問瀏覽器中的鏈接,我可以查看源代碼並查看我需要使用BeautifulSoup查找的代碼;然而,除非urlopen正常工作並返回正確的HTML,否則我無能爲力。我的RA工作取決於今晚完成這項工作。
有什麼建議嗎?
奇妙地工作。由於我是網絡抓取/抓取的新手,任何信息都可以幫到你。你可以分享爲什麼「requests.get(url)」和html = BeautifulSoup(r.text)返回當我右鍵單擊並查看源代碼時看到的HTML,但html = openurl(ensemblURL)沒有?非常感謝你。 – 2014-11-05 20:26:30
嗯,我不知道,也不打算進行調查,但現在每個人都在使用請求模塊而不是urllib,因爲它使用起來要容易得多。我確信你可以使它與urllib協同工作,但爲什麼要經歷這個麻煩? – ofrommel 2014-11-05 20:33:47
也請這麼友善地標記我的答案是正確的。 – ofrommel 2014-11-05 21:01:02