超简单python脚本——selenium框架下自动爬取植物科属种拉丁名名录

女朋友公司经常需要做各种植物名录几十百种不重复好麻烦啊,试试用selenium+xpath简单利用chrome通过植物名称列表循环查找爬取植物通数据库(http://1.zhiwutong.com/)植物名录(科,属,种,拉丁,中文)


输入列表


超简单python脚本——selenium框架下自动爬取植物科属种拉丁名名录_第1张图片
图片.png
#植物名录自动循环抓取
from selenium import webdriver
from collections import OrderedDict
import pandas as pd
chromedriver = r"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver"#启动浏览器
driver = webdriver.Chrome(chromedriver)#内核
url = "http://1.zhiwutong.com/"#访问植物通网站
driver.get(url)#获取网页
name = input("name:")#名录名称文件名字输入


def file(name):#名录名称文件输入函数
    file = open(name,'r')
    read = file.readlines()
    return read

def catch():#抓取与格式处理函数
    cat = driver.find_elements_by_xpath('//*[@id="table21"]/tbody/tr[2]/td[@align="center"]')
    ac = []
    for i in cat:
        al = i.text
        ac.append(al) 
    return ac
    
name = file(name)
plant = OrderedDict()
for i in name:#主工作代码
    element = driver.find_element_by_xpath('//*[@id="form2"]/input[1]')
    element.send_keys(i)#输入字段
    click = driver.find_element_by_xpath('//*[@id="form2"]/input[2]')
    click.click()
    ac = catch()
    i = i.strip()
    plant[i] = ac
    driver.get(url)#每次抓取后重定向回主页面

last1 = []#输出到csv
for i in plant.keys():
    last = [i,plant[i]]
    last1.append(last)
#print(last1)
column = ['name','belong']  
real = pd.DataFrame(columns = column,data = last1) 
real.to_csv('real.csv',encoding="utf_8_sig")#你输出csv的命名

输出CSV(real.csv):

超简单python脚本——selenium框架下自动爬取植物科属种拉丁名名录_第2张图片
图片.png

然后用python或者excel调调格式吧都很简单啦,记得调用chrome前需要配置chromedriver教程链接: https://www.cnblogs.com/x_wukong/p/9103099.html

你可能感兴趣的:(超简单python脚本——selenium框架下自动爬取植物科属种拉丁名名录)