gpt4 book ai didi

Python与美汤: Extract data from a specific set of list in unordered list category

转载 作者:行者123 更新时间:2023-12-01 07:17:37 25 4
gpt4 key购买 nike

我想去this页面,并抓取“事件”选项卡中的所有行:

  Antibacterial Activities
1 Flora:E.coli MIC:5.59µg/ml (2.0005µM) Method:MIC :
2 Flora:A.salmonicida subsp salmonicida MIC:11.18µg/ml (4.001µM) Method:MIC :
3 Flora:V.anguillarum MIC:2.79µg/ml (0.998461µM) Method:MIC :
4 Flora:S.typhimurium MIC:11.18µg/ml (4.001µM) Method:MIC :
5 Flora:B.subtilis MIC:5.59µg/ml (2.0005µM) Method:MIC :
6 Flora:L.ivanovii MIC:11.18µg/ml (4.001µM) Method:MIC :

我正在尝试使用 beautifulsoup 的不同方法,因为我在使用 selenium 时遇到了太多困难。我尝试过的不同方法:

import requests
from bs4 import BeautifulSoup as bs

html_page = urlopen('http://biotechlab.fudan.edu.cn/database/lamp/detail.php?id=L01A003388')
soup = bs(html_page)



#method 1
li = soup.select('ul')
print(li)



#method 2
for ultag in soup.find_all('ul',{'class':"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active"}):
for litag in ultag.find_all('li'):
print(litag.text)



#method 3
for ul in soup.findAll('ul', class_="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active"):
for link in ul.findAll('a'):
print(link.text)

方法 1 打印所有 UL,而我只希望以更好的格式返回这部分:

<ul><li><strong>  Antibacterial Activities</strong></li><li>  1  Flora:E.coli  MIC:5.59µg/ml  (2.0005µM)  Method:MIC  :</li><li>  2  Flora:A.salmonicida subsp salmonicida  MIC:11.18µg/ml  (4.001µM)  Method:MIC  :</li><li>  3  Flora:V.anguillarum  MIC:2.79µg/ml  (0.998461µM)  Method:MIC  :</li><li>  4  Flora:S.typhimurium  MIC:11.18µg/ml  (4.001µM)  Method:MIC  :</li><li>  5  Flora:B.subtilis  MIC:5.59µg/ml  (2.0005µM)  Method:MIC  :</li><li>  6  Flora:L.ivanovii  MIC:11.18µg/ml  (4.001µM)  Method:MIC  :</li></ul>

方法 2 和方法 3 都只是返回打印到屏幕上的“soup = bs(html_page)”。

如果有人可以告诉我哪里出了问题/如何提取感兴趣的数据,我将不胜感激。顺便说一句,我只是在学习,我最初尝试用 Selenium 来做到这一点,但我对此很挣扎,这就是我转向 beautifulsoup 的原因。

最佳答案

在 bs4 4.7.1+ 中,您可以使用 :contains 来定位 Activity 选项卡并使用 adjacent sibling combinator获取下一个 divtype selectordescendant combinator获取子li。我使用 re 对输出进行一些字符串清理。

import requests,re
from bs4 import BeautifulSoup as bs

r = requests.get('http://biotechlab.fudan.edu.cn/database/lamp/detail.php?id=L01A003388')
soup = bs(r.content, 'lxml')
items = [re.sub('(\xa0)+',' ',i.text.strip()) for i in soup.select('h3:contains(Activity) + div li')]
print(items)
<小时/>

输出:

enter image description here

关于Python与美汤: Extract data from a specific set of list in unordered list category,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873610/

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