簡體   English   中英

python beautifulsoup-當下一頁沒有唯一地址時如何轉到下一頁

[英]python beautifulsoup - how to go to next page while next page doesn't have an unique address

我正在嘗試使用beautifulsoup編寫一個Web爬蟲以從https://www.ncbi.nlm.nih.gov/gene/?term=Celiac+disease提取基因名稱

我的代碼可以從第一頁獲得所需的結果,但是我不知道如何編寫代碼以使程序移至下一頁。 單擊“下一步”按鈕后,我得到一個新地址,該地址與上一頁沒有任何關系。 例如,第一頁的地址為https://www.ncbi.nlm.nih.gov/gene/?term=Celiac+disease ,而下一頁的地址為https://www.ncbi.nlm.nih。 gov / gene (盡管仍然顯示與乳糜瀉相關的結果)

我已經查了一下google和stackoverflow,看是否有與此問題有關的文章。 但是我只能找到有關頁面的文章,這些頁面具有相似的地址,並且(對我而言)邏輯上遵循其蹤跡。

from bs4 import BeautifulSoup
from urllib.request import urlopen

gene_result = []

url = "https://www.ncbi.nlm.nih.gov/gene/?term=Celiac+disease"
html = urlopen(url).read()
soup = BeautifulSoup(html, "html5lib")

tbody = soup.find("tbody")
a_href = tbody.find_all("a")

for x in a_href:
    gene = x.contents[0]
    gene_result.append(gene)

print(gene_result)

該代碼可以很好地爬行第一頁,並且我得到了很好的結果:

['CTLA4', 'HLA-DQA1', 'IL2', 'IL21', 'CCR3', 'CELIAC2', 'ATXN2', 'SH2B3', 'HLA-DQB1', 'CELIAC5', 'TAGAP', 'CELIAC7', 'CELIAC13', 'CELIAC12', 'CELIAC11', 'CELIAC10', 'CELIAC9', 'CELIAC8', 'CELIAC6', 'KIAA1109']

有人可以幫我解決這個問題嗎?

對於此類網站,您需要使用帶有python硒網絡驅動程序。

您將需要通過此網絡驅動程序模擬從python代碼中單擊“下一步”按鈕,然后將html_source讀取到BeautifulSoup中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM