我正在努力清除所有的抗生素和它们的光谱。如果你首先点击下面的链接,你会看到8个按钮。然后,如果单击抗菌->;克林霉素,然后它会带你到下面的第二个链接,其中包含一个“光谱”部分,需要刮
基本上,我必须对所有抗生素进行自动化,但我需要JSON格式的它,这样我就可以在光谱和相应的抗生素之间建立链接。但正如你所看到的,光谱总是在另一页上。所有这些按钮也是动态的。完成这件事有哪些好方法?我已经编写了一些使用bs4、selenium的机器人程序,但一直遇到问题。我很难对这件事保持清醒
总而言之,理想情况下,我希望所有这些抗生素及其谱都以json格式组织,并以页面中的方式嵌套,以便我可以使用它们。我怎样才能把抗生素的光谱联系起来呢
谢谢你的帮助
https://www.hopkinsguides.com/hopkins/index/Johns_Hopkins_ABX_Guide/Antibiotics
import requests
from bs4 import BeautifulSoup
import time
url = "https://www.hopkinsguides.com/hopkins/"
anti = "https://www.hopkinsguides.com/hopkins/index/Johns_Hopkins_ABX_Guide/Antibiotics"
def main():
with requests.Session() as s:
pr = s.post(url, data={'user': 'user', 'password': 'pass'})
print("POST STATUS CODE: ", pr.status_code, "\n\n")
time.sleep(5)
return get_buttons(s)
buttons =[]
links = []
page_tracker = 0
def expand_page(s):
print("in expand page")
for page_tracker in buttons:
txt = s.get(url + "index-ajax" + buttons[page_tracker])
get_buttons(s, txt.text)
time.sleep(randint(2, 5))
print(links)
def get_links(s):
#Get links
for i in soup.findAll("a", class_="flush"):
#['./view/Johns_Hopkins_ABX_Guide/540016/all/Para_aminosalicylic_acid_[PAS]'
print("in get_links")
if True:
links.append(str(i.get("href")))
else:
print("it was false")
expand_page(s)
expand_page(s)
def get_buttons(s, cont=None):
global r, content, soup
r = s.get(anti)
content = r.text
soup = BeautifulSoup(content, features="lxml")
for i in soup.findAll("a"):
if i.get('data-path') != None:
buttons.append(str(i.get('data-path'))) #['Johns_Hopkins_ABX_Guide/Antibiotics/Antibacterial']
return get_links(s)
main()
目前没有回答
相关问题 更多 >
编程相关推荐