女朋友公司经常需要做各种植物名录几十百种不重复好麻烦啊,试试用selenium+xpath简单利用chrome通过植物名称列表循环查找爬取植物通数据库(http://1.zhiwutong.com/)植物名录(科,属,种,拉丁,中文)
输入列表
#植物名录自动循环抓取
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或者excel调调格式吧都很简单啦,记得调用chrome前需要配置chromedriver教程链接:https://www.cnblogs.com/x_wukong/p/9103099.html