gpt4 book ai didi

python - 使用 python ('NoneType' 对象进行网页抓取没有属性 'get_text' )

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:37 25 4
gpt4 key购买 nike

我想从 https://www.medindia.net/doctors/drug_information/abacavir.htm 的多个页面中提取多个药品信息, https://www.medindia.net/doctors/drug_information/talimogene_laherparepvec.htm ,等等

在每一页上,我想提取的信息如下:一般信息、品牌、处方禁忌症、副作用、剂量、如何服用、警告和储存。

通过使用 Beautiful soup,我能够识别提取所需的类。但是,当我尝试提取信息并将信息存储到变量中时,它显示 'NoneType' 对象没有属性 'get_text' 。似乎没有“药物含量”类的元素。但是,当我打印项目时,它会显示类(class)。请帮我。下面是我的代码:

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", "")

我尝试将类(class)更改为“报告内容药物小部件”。但是,通过该类(class),我无法提取一般信息。而且该药无副作用。如果药物信息不可用,我如何将 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", "")

请告知如何提取信息以及如何将 NA 放在我需要的信息不可用的地方。

最佳答案

我可以帮助您解决第一个问题,它应该可以帮助您开始了解如何处理未找到的内容,以及如何搜索您要查找的模式:

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'

关于python - 使用 python ('NoneType' 对象进行网页抓取没有属性 'get_text' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59038475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com