【发布时间】:2018-05-22 19:50:55
【问题描述】:
我正在尝试从以下网站获取一些数据。 https://www.drugbank.ca/drugs
对于表格中的每种药物,我需要深入了解名称和其他一些特定功能,例如类别、结构化指示(请单击药物名称以查看我将使用的功能)。
我编写了以下代码,但问题是我无法让我的代码处理分页(如您所见,超过 2000 页!)。
import requests
from bs4 import BeautifulSoup
def drug_data():
url = 'https://www.drugbank.ca/drugs/'
r = requests.get(url)
soup = BeautifulSoup(r.text ,"lxml")
for link in soup.select('name-head a'):
href = 'https://www.drugbank.ca/drugs/' + link.get('href')
pages_data(href)
def pages_data(item_url):
r = requests.get(item_url)
soup = BeautifulSoup(r.text, "lxml")
g_data = soup.select('div.content-container')
for item in g_data:
print item.contents[1].text
print item.contents[3].findAll('td')[1].text
try:
print item.contents[5].findAll('td',{'class':'col-md-2 col-sm-4'})
[0].text
except:
pass
print item_url
drug_data()
如何抓取所有数据并正确处理分页?
【问题讨论】:
-
所有页面使用几乎相同的 url -
&page=...- 因此您可以轻松地为下一页生成 url。 -
怎么样?你有一个例子吗?谢谢你弗拉斯 :)
-
正常
url = https://www.drugbank.ca/drugs?page=" + str(page_number) -
您可以使用
for或while循环并在无法读取页面时捕获页面末尾。下一页的链接也位于页面上的按钮“>”中,因此您可以使用BeautifulSoup获取它。
标签: python pagination beautifulsoup