Skip to content

一个基于selenium的美国EPA的ECOTOX毒性数据库爬虫

Notifications You must be signed in to change notification settings

Charles47-wc/ECOTOX-selenium-crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

ECOTOX-selenium-crawler

  • 一个基于selenium的美国EPA的ECOTOX毒性数据库爬虫
  • python新手, 请多指教
  • 美国EPA的ECOTOX官网: ECOTOX | Search (epa.gov)

环境搭建

  • 要下载Chrome浏览器
  • 需下载ChromeDriver, 一定要下载和自己电脑上Chrome版本一致的ChromeDriver(在 设置->关于Chrome 中查看)
  • 下载网址: 国内ChromeDriver镜像站
  • 解压后, 将ChromeDriver.exe所在文件夹添加到环境变量中

基本操作介绍

  • main()函数中, 按注释提示填入化合物, 物种(学名), 毒性终点, 时间长度(天) 程序对每一个物种为单位(外层循环), 对每个化合物进行毒性数据查询
def main():
    ds = ECOTOX_data_source(
        # 化合物
        ['DDT', 'hexachlorobenzene', 'heptachlor'],
        # 物种(学名)
        ['Lepomis', 'Bufo'],
        # 毒性终点
        ['LC50', 'LC50'],
        # 时间长度(天)
        [4, 1]
    )

    # 检查源数据是否合规
    ds.check()

    # 收集所有数据并存储
    ECOTOX_collect_all_data_and_document(ds)
  • 程序运行产生两个文件, log.txt记录每次查询的结果 每一行的记录为: 物种, 化合物, 毒性终点, 时长, 毒性数据(选中的毒性数据的几何平均值), 所有查询选中源数据

    如果没有选中的数据, 毒性数据为0, 源数据为空集

    保留5位小数, 单位为mg/L或AI mg/L

Lepomis	DDT	LC50	4_Day(s)	0.00684	[0.0034, 0.009, 0.0095, 0.0022, 0.016, 0.0064, 0.0088, 0.007, 0.0028, 0.003, 0.0039, 0.0067, 0.0064, 0.0044, 0.0036, 0.005, 0.0075, 0.0067, 0.0028, 0.0036, 0.0018, 0.0043, 0.0017, 0.003, 0.007, 0.007, 0.0036, 0.0012, 0.0046, 0.0094, 0.0028, 0.0049, 0.0125, 0.0047, 0.016, 0.005, 0.0027, 0.0029, 0.0125, 0.008, 0.0032, 0.0109, 0.0065, 0.0099, 0.0086, 0.0063, 0.0016, 0.0021, 0.0043, 0.0058, 0.0056, 0.015, 0.0022, 0.00403, 0.0074, 0.00403, 0.007, 0.042, 0.062, 0.04, 0.04, 0.062, 0.062, 0.032, 0.079, 0.051]
Lepomis	hexachlorobenzene	LC50	4_Day(s)	6.96742	[7.6, 12.0, 3.4, 7.6]
Lepomis	heptachlor	LC50	4_Day(s)	0.01545	[0.017, 0.019, 0.022, 0.018, 0.019, 0.019, 0.013, 0.013, 0.017, 0.017, 0.0053]
Bufo	DDT	LC50	1_Day(s)	2.06623	[5.3, 5.4, 2.4, 2.2, 1.4, 0.76, 1.0]
Bufo	hexachlorobenzene	LC50	1_Day(s)	0.00000	[]
Bufo	heptachlor	LC50	1_Day(s)	0.84400	[0.844]
  • 生成的result.txt将log.txt中的几何平均值单独记录, 每一行为一个物种, 每一列为一个化合物(这里没有打印化合物)
0.00684	6.96742	0.01545	Lepomis
2.06623	0.00000	0.84400	Bufo

程序的局限性

  • 目前由于个人需求, 仅查询EC50与LC50
  • 因为偷懒, 我设置每页显示100个数据, 仅对这一页的100个数据进行筛选(一般没那么多数据), 也没有设计当数据超过100个的时候的警报
  • 听说操作excel会比较慢, 所以直接写在.txt里了

目前没解决的问题

  • 想在headless状态下进行数据收集, 但是似乎就不能通过点击按钮来使得textarea变得interactable
  • 有的时候网卡, textarea里面输入不进去, 也有的时候会弹出警告框, 不知道为啥

About

一个基于selenium的美国EPA的ECOTOX毒性数据库爬虫

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages