python beautifulsoup - 如何在下一页没有唯一地址的情况下转到下一页

我正在尝试使用beautifulsoup编写一个网络爬虫从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']

有人可以帮我解决这个问题吗?


慕村225694
浏览 219回答 1
1回答

叮当猫咪

对于此类网站,您需要使用称为selenium webdriver 和 python 的东西。您将需要通过 Python 代码中的此 webdriver 模拟单击“下一步”按钮,然后将 html_source 读入 BeautifulSoup。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python