我想从https://www.medindia.net/doctors/drug_information/abacavir.htm的多个页面中提取多种药物信息, https://www.medindia.net/doctors/drug_information/talimogene_laherparepvec.htm, 等等
在每页上,我要提取的信息如下:常规,品牌,处方禁忌症,副作用,剂量,用法,警告和储存。
通过使用美丽汤,我可以确定提取所需的班级。但是,当我尝试提取信息并将信息存储到变量中时,它显示'NoneType' object has no attribute 'get_text'
。似乎“药物含量”类没有元素。但是,当我打印项目时,它将显示该类。请帮我。下面是我的代码:
import pandas as pd
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
url = 'https://www.medindia.net/doctors/drug_information/abacavir.htm'
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
drug = soup.find(class_='mi-container__fluid')
print(drug)
# whole page contain drug content
items = drug.find_all(class_='drug-content')
print(items)
# extract drug information from drug content into individual variable
general = items[0].find(class_='drug-content').get_text(strip=True).replace("\n", "")
brand = items[1].find(class_='report-content').get_text(strip=True).replace("\n", "")
prescription = items[1].find(class_='drug-content').get_text(strip=True).replace("\n", "")
contraindications = items[2].find(class_='drug-content').get_text(strip=True).replace("\n", "")
side_effect = items[2].find(class_='drug-content').get_text(strip=True).replace("\n", "")
dosage = items[3].find(class_='drug-content').get_text(strip=True).replace("\n", "")
how_to_use = items[4].find(class_='drug-content').get_text(strip=True).replace("\n", "")
warnings = items[5].find(class_='drug-content').get_text(strip=True).replace("\n", "")
storage = items[7].find(class_='drug-content').get_text(strip=True).replace("\n", "")
我已经尝试将类别更改为“报告内容毒品小部件”。但是,在该课程中,我无法提取常规信息。而且该药物也没有副作用。如果药物信息不可用,如何将NA放入变量中。
# whole page contain drug content
items = drug.find_all(class_='report-content drug-widget')
print(items)
# extract drug information from drug content into individual variable
general = items.find(class_='drug-content').get_text(strip=True).replace("\n", "")
brand = items[0].find(class_='drug-content').get_text(strip=True).replace("\n", "")
请建议如何提取信息,以及如何在无法获得所需信息的地方放置不适用。
答案 0 :(得分:0)
我可以为您提供第一个帮助,它应该帮助您开始如何处理未找到的内容以及如何搜索所需的模式:
try:
general = items[0].find('h3', attrs={'style': 'margin:0px!important'}).get_text(strip=True).replace("\n", "").replace("\xa0", " ")
except:
general = "N/A"
您可以将“通用名称:”切出,因为每个答案的大小可能相同:
general = general[15:]
print(general):
#'Abacavir'